OVH Cloud OVH Cloud

quand se produit window.onload ?

13 réponses
Avatar
yvon.thoravalNO-SPAM
Excusez moi pour une question sibasique :

quand se produit window.onload ?

je pensais, sans doute naïvement, que ça se produit quand la fenêtre est
chargée, ben avec Camino non.

basiquement, mon script, après quelques tripatouillages fait un :

window.onload=run();

il bloquait quand il était dans les balises <head/>
je l'ai mis juste avant </body>, ça marche nickel-chrome et donc, quand
ça ne marchait j'ai mis un alert("toto"); dans ma fonction run().

donc la question est de savoir si oui ou non window.onload c'est qd le
nav a fini de charger la page ou si ce n'est vrai qu'en théorie, les
implémentations c'est autre chose ;-)

ou, autre possibilité, me goure-je ?
(qq'un qui n'a plus fait de js+dom+xhtml+css depuis plusierus années)

--
yt

3 réponses

1 2
Avatar
yvon.thoravalNO-SPAM
YD wrote:


Ce que voulait écrire apparemment Yvon Thoraval est :
window.onload=run; // sans parenthèses


Bon, effectivement j'ai corrigé et ça marche comme je le souhaite sur ma
page d'essai où ne s'y trouvent que les ingrédients spécifiques à ce
script.

Par contre, sur une autre page, la vraie, celle sur laquelle le script
devra-t-être installé in fine, ça ne marche pas comme je veux, je dois
tjs mettre mon script après les éléments html.

L'essai est là :
<http://81.57.96.20/~yvon/essais/lafoo.html>

La version à intégrer là :
<http://81.57.96.20/~yvon/AceMDI/home/home.html>
(je n'interviens pas sur le reste de la page juste js+css+html associé
aux images défilantes)

les deux scripts sont différents, laf.js : pas de preload, laf_home.js :
AVEC preload...

attention il y a un paquet d'images à charger (808 ko)

je peux réduire si demande...
--
yt

Avatar
YD
Désolé de ne pas avoir été plus rapide mais le temps manque - pas le
travail !

YD wrote:

window.onload=run; // sans parenthèses


Bon, effectivement j'ai corrigé et ça marche comme je le souhaite sur ma
page d'essai où ne s'y trouvent que les ingrédients spécifiques à ce
script.

Par contre, sur une autre page, la vraie, celle sur laquelle le script
devra-t-être installé in fine, ça ne marche pas comme je veux, je dois
tjs mettre mon script après les éléments html.


Je pense avoir trouvé ce qui posait problème !

Le script affecte window.onload avec run mais la page après attribue
onload à autre chose dans le tag BODY :
<body onload="loginfocus();" ...

Or c'est le même objet du navigateur dans les deux cas, donc la deuxième
affectation écrase la première.

Un contournement :
- supprimer l'attribut onload du BODY
- dans le script, au choix :
ajouter loginfocus() dans la fonction run :
function run() {
vc.showOne(num);
num++;
if(num == size) num = 0;
myCounter = setTimeout("run()", 1000);
loginfocus();
}

ou si ça te gêne de mélanger torchons et serviettes, une fonction anonyme :
window.onload=function(){run(); loginFocus();}
ou syntaxe 2 plus Java ;-)
window.onload = new Function("run(); loginfocus();")

ou alors supprimer window.onload du script et dans la balise BODY
<body onload="run();loginfocus();"...

Tout cela revenant grosso modo au même, déclarer un seul onload quoi ;-)

--
Y.D.


Avatar
yvon.thoravalNO-SPAM
YD wrote:


Tout cela revenant grosso modo au même, déclarer un seul onload quoi ;-)


Ah ouais, m$@@de c'est ça, bravo et merci !

Mais bon le loginfocus() je ne peux pas y toucher...
On aura bientôt autre chose, au moins je serai aaverti ;-)
--
yt

1 2