8
votes

Devrais-je utiliser des fonctions DOM-READY si mes scripts sont à la fin du corps?

Je sais que, dans JQuery, on nous dit d'utiliser $ (document) .Ready () afin de s'assurer que les éléments DOM sont prêts à être interactifs. Je sais que cela s'applique définitivement si les balises de script sont dans le . S'ils sont à la fin du , après tous les éléments DOM, devrais-je toujours utiliser une fonction DOM-READY? Y a-t-il des navigateurs dans lesquels mon code échouerait si je ne l'avais pas?

merci!


0 commentaires

4 Réponses :


0
votes

La fonction DOM-READY garantit que l'ensemble du DOM a été créé de manière à ce que tous les éléments du document puissent être atteints. Normal window.onload uniquement lorsque toutes les images ont été chargées, tandis que l'événement de JQuery déclenche dès que la structure du document existe. Si vous avez besoin de quelque chose pour arriver "à droite lorsque le document se charge", il n'y a aucune raison d'utiliser quoi que ce soit que $ (document) .Ready () . .


1 commentaires

Donc, ma question est que le document est suffisamment chargé au moment de l'exécution de mes scripts?



0
votes

Je n'ai jamais rencontré un navigateur où vous ne pouviez pas accéder à la DOM des éléments HTML apparaissant avant mon script.

Cela dit, si vous tirez dans JQuery ou déjà, j'utiliserais probablement la méthode prête (), juste pour faciliter la tâche que d'autres personnes soient utilisées à JQuery pour comprendre le code.

Y a-t-il une raison pour laquelle vous voudriez éviter cela?

(Si vous recherchez un moyen d'éviter de charger JQuery, alors, bien, oui, dans mon expérience, vous pouvez toujours accéder au DOM des éléments apparaissant avant le script.)


1 commentaires

J'utilise déjà JQuery pour General Dom Access, mais mon script est organisé de manière à ce que, afin de modéliser correctement certaines actions prêtes à la DOM, elles se retrouvent dans différentes parties du code. Il a l'air plus propre si je pouvais simplement supprimer le $ (fonction () {}), mais je ne suis pas disposé à le faire jusqu'à ce que je ne puisse pas supposer que cela ne puisse rien blesser.



1
votes

Il y a une autre raison de mettre vos scripts à la fin: les navigateurs doivent pas charger des fichiers JS en parallèle car ils peuvent affecter tout ce qui vient après. En fait, tout s'arrête dans le navigateur jusqu'à ce que le fichier JS soit téléchargé et analysé - texte, images, tout. Donc, à moins que vous ne devez les charger tôt, chargez votre JS à la fin de la page.


2 commentaires

En fait, la plupart des navigateurs modernes peuvent charger des scripts en parallèle - voir la carte de BrowserScope.org/?v = Top & Catégorie = Réseau Toutefois, le chargement parallèle ne résout pas le problème autre problème que vous avez mentionné que les navigateurs arrêtent d'analyser et de rendu jusqu'à ce que les scripts se soient chargés et exécutés, de mettre ainsi des scripts en bas.


@Annie: Merci pour le lien. Je n'avais pas réalisé qu'ils avaient corrigé le problème de téléchargement parallèle-script dans FF 3.5 et MSIE 8. Il est intéressant de noter qu'ils téléchargeront tous les deux script / script et feuille de script / stylesheet en parallèle, mais pas de script / image. Une idée de ce que cela pourrait être?



13
votes

Il y a une chose que vous ne pouvez pas faire dans un