11402 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,

J'aurai aimé savoir si il n'y que la solution suivante pour lancer un javascript à l'ouverture de la page :

<body onLoad="notrefonction()" ...>


Si oui ?

comment faire pour lancer plusieurs javascripts en même temps ?

Merci,
bien
Modifié par Jean-Paul Creative-E (08 Nov 2006 - 04:44)
Bonjour.
On peut faire exécuter plusieurs lignes de code en les séparant par des points-virgules.

<body onLoad="js_function_1(); js_function_2(); js_function_3()">

On peut aussi (si besoin est) sophistiquer le fragment de code...

<body onload="	s= 'bienvenue ';
				if (navigator.appName.indexOf('Explorer') > -1)
				{
					s = 'hou! le vilain! ';
					alert(s + navigator.appName);
				}
					else
					{
						alert(s + navigator.appName);
					}
				alert('fin de traitement')">
IL existe aussi la solution suivante, qui est souvent préférable :
window.onload = function () { ... }
Salut,

je sais bien que Koala64 a émis des réserve sur cette technique, mais pour ma part ce que Jep a fait avec evenements multiples au chargement d'une page me semble vraiment très bien.

1. une fois le dispositif installé tout est automatique.
2. celà permet de mettre les différents scripts que l'on peut avoir fait dans des fichiers séparés. Ce qui est d'une grande aide pour la clarté de consultation de ces scripts.
Jean-Paul Creative-E a écrit :

J'ai trouvé autres choses vous m'en direz des nouvelles.


Ben pense à faire suivre rapidement, parce que c'est pas dit qu'on va rester scotchés sur ce post Smiley cligne
Modérateur
Salut,

clb56 a écrit :
Salut,

je sais bien que Koala64 a émis des réserve sur cette technique, mais pour ma part ce que Jep a fait avec evenements multiples au chargement d'une page me semble vraiment très bien.
Les réserves que j'ai pu émettre concernent surtout l'utilisation du window.onload vu que si on déclare deux fois ce gestionnaire d'événement, on écrase le premier, ce qui n'est pas souhaitable en cas de multiplication du script. Le code de Jep n'est pas néfaste en soi lorsqu'on est le seul à gérer sa bibliothèque mais il faut juste avoir conscience qu'en cas de diffusion du script, ce n'est pas la meilleure méthode. Par ailleurs, je disais surtout que par précaution, je ferais bien un tableau des données acceptables vu qu'il se sert de la méthode eval. Ca reste à confirmer, je n'ai pas fait de test pour mettre le script en défaut. Smiley cligne

Maintenant, par habitude, je préfère tout de même me servir de la fonction décrite dans ce topic (fonction addEvent), qui m'offre les mêmes possibilités sans avoir ces quelques désavantages... Smiley smile

En somme, je dirais que ce soit le lien "DOM javascript onload" proposé par Jean-Paul Creative-E ou le script de Jep, on ne fait que régler partiellement le problème... Pour soi, oui, ça convient mais ça ne me semble pas judicieux lorsqu'on diffuse le script.

Le lien "Solution javascript", quant à lui, ne semble pas encore au point ; il n'est pas compatible pour tous les navigateurs, y compris les plus utilisés.
Modifié par koala64 (08 Nov 2006 - 14:15)
Bonsoir,
Ce que je n'aime pas dans le script de JEP :
Je préfèrerais nettement avoir une syntaxe type addToStart(fonction, arg1, arg2, arg3) que addToStart("function(arg1, arg2, arg3);"); parce que c'est plus facile.

Firefox permet bien cette syntaxe avec le setTimeout, c'est que ça doit être possible...
En effet, utiliser des chaînes rend impossible ou complique le passage de paramètres tels que des tableaux multidimensionnels, objets, etc.

IL faudrait pouvoir redéfinir le setter de window.onload, mais le problème c'est qu'après c'est du javascript spécifique à firefox qui ne sera au grand jamais compatible IE.
QuentinC a écrit :

Je préfèrerais nettement avoir une syntaxe type addToStart(fonction, arg1, arg2, arg3) que addToStart("function(arg1, arg2, arg3);"); parce que c'est plus facile.

Firefox permet bien cette syntaxe avec le setTimeout, c'est que ça doit être possible...
En effet, utiliser des chaînes rend impossible ou complique le passage de paramètres tels que des tableaux multidimensionnels, objets, etc.

IL faudrait pouvoir redéfinir le setter de window.onload, mais le problème c'est qu'après c'est du javascript spécifique à firefox qui ne sera au grand jamais compatible IE.


Bon ben là c'est très simple j'ai rien compris Smiley lol

Pitié pour les boulets Please Smiley biggol
Bonsoir,
koala64 a écrit :
Le lien "Solution javascript", quant à lui, ne semble pas encore au point ; il n'est pas compatible pour tous les navigateurs, y compris les plus utilisés.
Bah, tout de même avec IE, Firefox, Opera et Safari. Smiley langue
Modérateur
Ah, zut ! oui, j'ai lu un peu vite... Smiley langue

... mais toi aussi parce qu'Opera n'en fait pas partie... Smiley lol

<edit> j'ai rien dit ! je viens de voir les commentaires... vais me coucher tiens... Smiley confused </edit>
Modifié par koala64 (08 Nov 2006 - 23:30)
Jean-Paul Creative-E a écrit :
J'ai trouvé ces 2 articles qui peuvent compléter le chargement correct du javascript au démarrage :

DOM javascript onload


Solution javascript


Bonjour,
Ces liens ne répondent pas à ta premiére question, mais à un problème de l'évènement "load" sur l'objet window :
a écrit :
window.onload ou body.onload. Problème : ces événements ne seront déclenchés que lorsque tous les éléments de la page, y compris applets et images, seront chargés

- Dans le premier cas, est testé le chargement d'une petite image avant de lancer la ou les fonctions d'initialisation .
- Dans le second, est détecté la fin du chargement du document (fichier html) pour lancer nos fonctions avant celui des images et objets restants.( reste à savoir si c'est valide) test ici

La solution de Koala64 permet l'ajout de plusieurs fonctions de façon plus souple (je n'ai pas dit plus simple) mais ne résoud pas cette problématique Smiley lol
Modifié par chmel (09 Nov 2006 - 00:23)
Effectivement je n'ai peut etre pas été assez précis dans mon post. C'était pour essayer d'amener des solutions pour le chargement correct d'un javascript après que vous ayez cité les différentes solutions pour lancer un javascript au démarrage.
chmel a écrit :
- Dans le second, est détecté la fin du chargement du document (fichier html) pour lancer nos fonctions avant celui des images et objets restants.( reste à savoir si c'est valide)
Valide ? Qu'est-ce que tu veux dire par là ?
chmel a écrit :
La page test de Dean Edwards donne 10 erreurs au validateur
Je ne vois pas le rapport entre le fait que sa page de test soit invalide et que sa méthode le soit...

Si tu avais lu ce qu'il propose, tu saurais que la partie HTML se limite à une inclusion de script tout à fait banale.
chmel a écrit :
Concernant notre sujet, on peut initialiser sans "load" :
- En écrivant le script dans le body, après les éléments auquels le script se rattache. C'est valide mais on l'évite souvent pour une question de convention, je crois.
C'est invalide en XHTML 1.1.
chmel a écrit :
- Au premier mouvement de la souris ou du clavier comme ici
Je préfère nettement une solution comme celle de Dean Edwards, qui me parait plus propre...
Pages :