2010-11-04 16 views
0

Je travaille avec du code HTML/JS hérité, où je dois attacher à l'événement de chargement. Le script avec lequel je travaille est en dehors des tags <head>.événement de chargement de la fenêtre en dehors de la tête HTML

L'écoute de l'événement de chargement n'est-elle pas fiable lors de l'association de l'événement à l'écoute en dehors de la tête?

est-il en quelque sorte possible que la page charge déjà et ignore mon écouteur d'événements?

Dans mes tests, l'écouteur d'événement est bien déclenché, mais je m'assure que c'est le cas tout le temps.

btw. En raison de la nature héritée, je dois éviter d'utiliser jQuery (une journée malheureuse).

+0

Dupliquer de cela? http://stackoverflow.com/questions/9434/how-do-i-add-an-additional-window-onload-event-in-javascript – mplungjan

Répondre

2

écoute l'événement de charge fiable lors de la fixation de l'événement en écoutant l'extérieur de la tête

Non, pas si vous parlez littéralement au sujet window.onload. window.onload arrive très, très tard dans le processus, après que le HTML entier a été analysé (et aussi après que toutes les ressources externes comme les images et les feuilles de style et tel ont été complètement chargées). Ça devrait aller.

Un peu hors-sujet, mais vous pouvez obtenir un appel fiable plus tôt si vous le souhaitez même sans utiliser jQuery. Il suffit de mettre ce juste avant la fermeture </body> tag:

<script type='text/javascript'> 
    myLoadFunction(); 
</script> 
</body> 

À ce moment-là, le DOM est reliably available, mais l'appel se produit un beaucoup plus tôt que window.onload (en fonction de la taille de vos ressources externes, peut-être quelques secondes même plus tôt). Les experts JavaScript de Google contestent la nécessité d'un événement «prêt» de style jQuery (voir le lien ci-dessus) pour cette raison. Certains "JavaScript discret" ne l'aiment pas (même si pour moi ce n'est pas très différent de mettre un script dans le head, à condition que la fonction soit standardisée dans votre application, ce n'est pas comme si vous saupoudriez des attributs partout), mais on dirait que ce navire a déjà navigué dans le cas de ce code dont vous avez hérité. ;-)

+0

Merci pour la réponse rapide. Je n'ai pas vraiment la flexibilité de déplacer le JavaScript vers le bas. Bien merci pour les conseils utiles. –

+0

@Alex: Pas de soucis, heureux que cela a aidé. S'amuser. :-) –