Inserer des <script></script> par innerHTML ?? - HTML/CSS - Programmation
Marsh Posté le 16-06-2006 à 14:26:52
Autrement dit
Code :
|
fonctionne mais pas
Code :
|
Marsh Posté le 16-06-2006 à 15:40:17
Et y'a un moyen de fair ce que je veux faire ?? Charger à la volée de nouvelles fonction javascript ?
Marsh Posté le 16-06-2006 à 16:00:58
via la commande "eval" peut etre : http://www.laltruiste.com/document [...] _eval.html
Marsh Posté le 16-06-2006 à 16:22:06
J'ai tenté ça mais ça fonctionne pas
Code :
|
Marsh Posté le 16-06-2006 à 16:28:37
Code :
|
Marsh Posté le 16-06-2006 à 21:32:57
Moi aussi j'ai tenté des milliers de fois, toujours rien ..
Marsh Posté le 16-06-2006 à 21:37:18
function addScript(src) {
var header = document.getElementsByTagName("head" )[0];
var newScript = document.createElement("script" );
newScript.type="text/javascript";
newScript.src=src;
header.appendChild("script" );
}
codé en live ici, ça marche après tests
genre :
alert("tata" ); ca fonctionne
mais tout ce qui est déclaration de fonction c'est DTC bien profond sous Firefox
dommage ça aurait pu être cool.
Go to google
Marsh Posté le 16-06-2006 à 22:45:57
gatsu35 a écrit : header.appendChild("script" ); |
La console JS ne reconnait pas appendChild peut-être faut-il déclarer un document XHTML ésotérique ?
Rajouter un élement child à la balise head ça c'est XML compliant ..
Marsh Posté le 16-06-2006 à 22:50:47
après plusieurs tests et une lecture sur cette page
http://www.ibilab.net/webdev/artic [...] ipt-13.htm
j'ai ainsi créé et nettoyé un peu les deux fonctions suivantes qui fonctionnent assez bien mais... :
Code :
|
j'ai alors créé une fonction go() qui chargeait un fichier test.js puis elle appelle une fonction testjs() qui est déclaré dans ce fichier javascript.
le fichier test.js :
Code :
|
la fonction go()
Code :
|
résultats lors de l'appel de la fonction go via un input :
Internet explorer :
1ere fois : "tata", puis "toto".....2eme fois : "toto".
FireFox :
1ere fois : "tata", puis Erreur JS.....2eme fois : "toto".
Opera :
1ere fois : rien, puis "toto"....2eme fois : "toto".
conclusion :
sous IE, le fichier JS est interprété et les déclaration de fonction le sont immédiatement
sous FF, le fichier JS est interprété mais les déclarations de fonction sont faites après un temps de latence j'ai l'impression. J'ai testé en lancant setTimeout("testjs()",20), et ca marchait sous firefox (en gros 20 millisecondes avec l'include du JS je lance testjs().
et sous Opera, ben le fichier JS n'est pas interprété mais les functions déclarées sont bien intégrées.
Marsh Posté le 16-06-2006 à 22:52:49
grosbin a écrit : La console JS ne reconnait pas appendChild peut-être faut-il déclarer un document XHTML ésotérique ? |
c'est pas la console JS qui doit reconnaitre appendChild
appendChild c'est une méthode inhérente à n'importe quel élément du DOM de ta page.
si tu testais bien et jetais un coup d'oeil au DOM Inspector sous FF tu verrait que cette méthode est bel et bien présente.
Marsh Posté le 16-06-2006 à 22:54:54
appendChild -> is not a function
Le genre de dév cross-navigateur qui me rappelle de sacrées nuits-blanches
Bravo à toi
Marsh Posté le 16-06-2006 à 23:31:50
grosbin a écrit : appendChild -> is not a function |
Ben c'est mon boulot et puis j'aime passer des nuits blanches a faire du bordel de tests crossbrowsers à la fois pour le JS (DOM scripting), et les CSS.
Bon pour l'instant chez moi je fais pleins de tests sur IE, FF1.5 et Opera
et SAFARI dans le cadre du boulot...
Même si j'aimerai bien avoir 1 PC supplémentaire avec linux dessus pour konqueror et un mac mini pour tester safari et IE5 mac (meme si celui ci est voué à la poubelle)
Marsh Posté le 17-06-2006 à 08:26:11
gatsu35 a écrit : Ben c'est mon boulot et puis j'aime passer des nuits blanches a faire du bordel de tests crossbrowsers à la fois pour le JS (DOM scripting), et les CSS. |
Bon courage vieux
Me rappelle que j'ai passé 2 semaine sur un truc similaire
Marsh Posté le 17-06-2006 à 09:58:29
grosbin a écrit : appendChild -> is not a function |
T'es sur quel navigateur pour que ça donne ça ? IE3 ?
Marsh Posté le 17-06-2006 à 15:23:03
Firefox
Code :
|
Marsh Posté le 11-08-2006 à 10:29:33
grosbin a écrit :
|
il manque un element dans cette fonction! en effet le header est un tableau !!! donc
Code :
|
ça marche sur firefox (plus de "appendChild is not a function" a s'en arracher les cheveux !), sur ie et opera !
Marsh Posté le 09-02-2011 à 00:17:52
Je remonte le post car j'ai un problème similaire et je ne parviens à le résoudre malgré toutes ces réponses.
J'affiche une requête SQL en tableau dans une div popup via un innerHTML.
Je construis en parallèle un tableau JS pour permettre une recherche dans la liste sans refaire de requête.
Mon bazar fonctionne bien tant que ma construction JS n'est pas dans le innerHTML (forcément... d'où ce message).
Pour l'ajax en JS, j'ai donc cet innerHTML :
Code :
|
dans ma popup PHP la construction JS :
Code :
|
conv_tabJS est une fonction de conversion. Le tout fonctionne hors innerHTML, mais pas à l'intérieur. Firebug affiche tout le code, mais le script ne semble pas fonctionner.
Marsh Posté le 16-06-2006 à 13:54:46
Salut,
Je voudrais rafraichir le contenu d'un div par ajax et innerHTML.
Le code de la page que je récupère par ajax est de la forme
C'est sale, les <script> ne sont pas dans le head mais en même temps je n'y ai pas accès ... Cela fonctionne dans une autre page du site affichant directement ce contenu. Par contre ça ne fonctionne pas quand j'ajoute ce code html par innerHTML.
Enfait l'html est bien reconnu, comme le css mais par contre les fonctions définit dans les balise script ne sont pas prises en compte.
Dans firefox (et l'extention webdevelopper) je regarde le contenu de la page html généré après l'appel ajax et je vois que la partie script a disparue. Le css reste, la suite du html aussi mais la partie script saute lors de l'insertion par innerHTML;
Est-ce un problème connu ? Y'a-t-il une parade ?
---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry