qu'est-ce exactement document-prêt moyen en jquery
Disons que j'ai une page HTML qui contient un fichier javascript:
L'base.js c'est comme cela:
$(document).ready(function () {
obj.init();
}
//..............
var obj = {...};
Étonnamment, parfois(pas tout le temps) Firebug m'indique l'erreur undefined sur obj.init()
appel! Ma compréhension est que le document soit prêt signifie que tous les éléments html, y compris les images, les fichiers javascript téléchargé et exécuté(?).
Je crois pour trouver la cause de cette erreur, nous avons besoin de comprendre ce qu'est exactement le "document ready" signifie? quelqu'un a des idée?
============================
Mise à jour: peut-être que je ne devrais pas parler de l'image ici, ma principale préoccupation est concernant le fichier javascript en particulier. N' "DOM entièrement construit" inclure "tous les code javascript exécuté"?
============================
Mise à jour: Il semble que les gens ici ont convenu que l'événement "le document.prêt" ne SERA PAS déclenchée jusqu'à ce que TOUT code javascript ai téléchargé et exécuté. Ainsi, la cause racine du problème restent inconnus. Je n'ai contourné ce problème après que j'ai déplacé le $(document).prêt bloc vers le bas du fichier javascript.
ready !== load
"document de prêt tous les moyens y compris les images, les fichiers javascript téléchargé et exécuté" en particulier est faux.- est droit, "document" prêt dépend du navigateur, pas sur JQuery.
- Les Images ne sont pas nécessairement chargé sur le document.prêt.
Vous devez vous connecter pour publier un commentaire.
À partir de la documentation de
jQuery.prêt()
:ready
est en fait un événement spécifique pour jQuery (comme expliqué ici), maisonload
est en fait intégré dans le JavaScript (voir sur la liste ici). Le jQuery estready
est très proche deDOMContentLoaded
(voir liste de compatibilité).La
ready
événement se produit lorsque le document est chargé et analysée.Cela inclut tous les fichiers Javascript, mais pas images.
Le prêt événement se produit après que le document est analysé. Certains navigateurs ont un événement spécifique pour cela, dans d'autres navigateurs jQuery utilise un timer qui interroge le statut du document. Cela signifie que l'événement arrive, soit dès que la totalité du document est analysé, ou un peu plus tard, selon le navigateur. Ce n'est normalement pas un problème, comme il n'arrive pas avant rien de ce document est analysé.
Si vous avez besoin de toutes les images à charger avant de vous faire quelque chose, vous devez utiliser le
load
événement à la place.ready
juste simplifie la détermination du moment lorsque le DOM est prêt.Vous devez définir
obj
avant le référençant.Également le document.prêt ne signifie pas que les ressources seront chargés, seulement que le document a été analysé, de sorte que les ressources de la charge entre le document et le
$(window).load
événement.$(document).ready(function () { obj.init(); }); var obj = {};
aurait pour résultat Ne peut pas appeler la méthodeinit
de undefined, carobj
n'est PAS défini dans le cadre de la fonction que vous fournissez à jQuery de prêt de la méthode. Comment n'est-ce pas la question? Veuillez fournir code réel. À partir de votre code et l'erreur signalée, on dirait que vous vous êtes trompe document de prêt qui est un DOM événement pour le référencement des objets qui n'ont pas été définis dans le champ d'application.before
vous référence? Pas de. Référence de l'avant et vous n'obtiendrez pas de méthode non parce que l'objet au moment de l'établissement n'existent pas.. en supposant que vous êtes toujours aux prises avec les "Firebug m'indique l'erreur undefined sur obj.init() appel!" est l'erreur....