Effectivement , de plus suite a mes recherches :
http://www.developpez.net/forums/d72...amique-script/
Pas pris en compte sous IE6 :D
Version imprimable
Effectivement , de plus suite a mes recherches :
http://www.developpez.net/forums/d72...amique-script/
Pas pris en compte sous IE6 :D
Chez moi, sous IE6 l'ajout de script marche tres bien...
@olivierPa : Parce que si dans ce que tu ajoutes via innerHTML tu as du script ou des gestionnaires d'évenement, sous IE notamment tu risques d'avoir des problèmes. En fait, le tout est de connaitre les problèmes que innerHTML peut engendrer, et de voir si ca peut te concerner ou non.
@DoubleU:
Ok, je suis d'accord avec ce point de vue: utiliser innnerHTML tout en ayant conscience de ses limitations. Bon, a priori, il ne me serait pas venu a l'esprit d'ajouter du script javascript avec du innerHTML... mais c'est toujours mieux d'etre au courant. Merci.
olivier.
Donc dans le cas précis d'importation de script ou d'écriture de <style>, le document.write serait autorisé sous IE6?
Boa67 ,
autorisé oui ( d'ailleur la seule solution apparemment ) mais je crois que c'est le seul cas ou l'on doit utiliser document.write plutôt que le dom ...
Ca marche tres bien ca chez moi sous IE6, avec juste un alert dans le fichier chargé...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <html> <head> <script type="text/javascript"> function load() { var scr = document.createElement("script"); scr.src="test.js"; scr.type="text/javascript"; document.getElementsByTagName("head")[0].appendChild(scr); } </script> </head> <body> <script> load(); </script> </body> </html>
placé dans le body ( le fichier test est dans le même dossier ) ...Code:
1
2
3
4
5
6
7
8
9 <script type="text/javascript"> var MyHead = document.getElementsByTagName("head")[0]; var newScript = document.createElement('script'); newScript.type = 'text/javascript'; newScript.src = 'test.js'; MyHead.appendChild(newScript); //Appel de la méthode du fichier test(); </script>
en incluant le fichier directement ça marche ( avec une méthode :
dans le fichier test ...Code:function test(){ alert('test')}
si quelqu'un peut m'expliquer pourquoi :D
ps :test(); is undefined ...
Non ?Code:
1
2
3
4
5
6
7
8
9 <script type="text/javascript"> var MyHead = document.getElementsByTagName("head")[0]; var newScript = document.createElement('script'); newScript.type = 'text/javascript'; newScript.src = 'test.js'; MyHead.appendChild(newScript); //Appel de la méthode du fichier newScript.onload = function(){test();} </script>
D'un autre coté, c'est une bonne pratique ou un problème spécifique?
On peut effectivement se poser la question ;)
Ceci dit, cela permet de rebondir sur une vraie bonne pratique :
- Attendre qu'un objet soit disponible avant de le manipuler !
:D
j'aurais pensé a TOUT sauf a ça :DCode:newScript.onload = function(){test();}
Pour la bonne pratique pas certains car il s'agit plus d'une problème de rapidité d'exécution de code je pense...
Par contre pour la bonne pratique , il est plus propre de loader un script via le dom plutôt qu'un document.write() ... ;)
On se fait un petit récapitulatif sur la première page ??
Bovino ?
Une dernière digression pour répondre au chomeur.
Ajouter un script dynamiquement provoque une requete HTTP pour aller chercher la ressource ciblée. Cette requête se fait de façon asynchrone pour ne pas freezer le browser durant le traitement, donc au moment ou tu fais
la requête a juste été envoyée, donc tu ne connais pas encore la méthode test.Code:
1
2 //Appel de la méthode du fichier test();
Tu ne pourras utiliser cette méthode qu'une fois le chargement complet du script terminé.
c'est plutôt logique en fait :calim2:
à aucun moment je ne me suis posé la question du load du script a chargé ( aussi petit soit-il ... )
Merci pour le complément d'info doubleU et Bovino
Bonjour, je vais deriver un peu du sujet courant, mais une question me taraude...
Une des bonnes pratiques du javascript c'est de separer le code javascript du reste du code HTML. Avec une MasterPage on a besoin d'appeler a priori ces fichiers qu'une seule fois.
Seulement imaginons qu'un de mes scripts soit utilise que sur une seule page (heritant de ma MasterPage ). Je suppose que je dois inserer ma balise script seulement dans cette page et non dans la MasterPage, non ?
Si oui, alors comment connaitre le juste milieu ?
Exemple : si j'ai quatre pages sur 150 qui utilisent un javascript, que dois-je faire ?
Merci
inclure ton script QUE dans ces pages ^^
Ben oui mais jusqu'a quel point ? Si je te dis j'en ai 50 pages sur 75 tu me reponds quoi ? :P
Y a-t-il un moyen pour savoir comment optimiser tout ca ?
Ce n'est pas le sujet, tu peux ouvrir une discussion dans le forum asp.net.
J'ai hesite a ouvrir un sujet pour ca. Mais cette section, d'apres ce que j'ai compris de Bovino est la pour discuter des bonnes pratiques Javascript a utiliser.
Ce probleme n'en fait-il pas parti ?