was genau document-ready bedeutet, dass in jquery
Lassen Sie uns sagen, ich habe eine HTML-Seite, die enthält eine javascript-Datei:
Den base.js ist wie diese:
$(document).ready(function () {
obj.init();
}
//..............
var obj = {...};
Überraschend, manchmal(nicht die ganze Zeit) Firebug zeigt mir die undefinierten Fehler auf obj.init()
Anruf! Mein Verständnis ist, dass die document-ready bedeutet, dass alle html-Elemente, wie Bilder, javascript-Dateien heruntergeladen und ausgeführt(?).
Ich glaube, um zu finden, die Ursache für diesen Fehler, wir müssen verstehen, was genau die "Dokument bereit" bedeutet? jemand hat keine Einsicht?
============================
Update: vielleicht sollte ich nicht erwähnen, Bild hier, meine größte Sorge ist in Bezug auf die javascript-Datei im besonderen. Bedeutet "DOM vollständig aufgebaut" gehören "alle javascript-code ausgeführt"?
============================
Wieder ein Update: Es scheint, die Menschen hier einig, dass Ereignis "Dokument.bereit" WIRD NICHT ausgelöst, bis ALLE javascript-code bekam, heruntergeladen und ausgeführt. Also, Ursache des Problems unbekannt bleiben. Ich habe dieses Problem umgangen, nachdem ich umgezogen $(document).ready block auf der Unterseite der javascript-Datei.
ready !== load
"document ready bedeutet, dass alle, einschließlich der Bilder, javascript-Dateien heruntergeladen und ausgeführt" ist insbesondere falsch.- ist Recht, "Dokument bereit" ist, hängt auf den browser, nicht auf JQuery.
- Bilder sind nicht unbedingt geladenen Dokument.bereit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Dokumentation der
jQuery.ready()
:ready
ist tatsächlich ein Ereignis spezifisch für jQuery (siehe hier), aberonload
ist wirklich integriert in das JavaScript (siehe auf der Liste hier). Die jQuery -ready
ist sehr nah anDOMContentLoaded
(siehe Kompatibilitätsliste).Den
ready
Ereignis wird ausgelöst, wenn das Dokument geladen und analysiert.Diese enthält alle Javascript-Dateien, aber nicht Bilder.
Bereit-Ereignis passiert, nachdem das Dokument eingelesen wird. Einige Browser haben ein bestimmtes Ereignis für dieses, in anderen Browsern jQuery nutzt einen timer, der abfragt, den status des Dokuments. Dies bedeutet, dass das Ereignis geschieht entweder, sobald der gesamte Dokument geparst wird, oder etwas später, je nach browser. Dies ist normalerweise kein problem, da es nicht passieren vor etwas von dem Dokument geparst wird.
Wenn alle Bilder geladen sein, bevor Sie etwas tun, sollten Sie die
load
Veranstaltung statt.ready
nur vereinfacht die Bestimmung der moment, wenn das DOM bereit ist.Sollten Sie definieren
obj
vor, die darauf verweisen.Auch, zu dokumentieren.bereit bedeutet nicht, dass die Ressourcen geladen werden, nur, dass das Dokument analysiert, so dass die Ressourcen-Auslastung zwischen Dokument bereit und in der
$(window).load
Veranstaltung.$(document).ready(function () { obj.init(); }); var obj = {};
führen würde, kann Nicht rufen Sie die Methodeinit
undefined, weilobj
ist NICHT definiert im Rahmen der Funktion, die Sie bieten, um die jQuery ready Methode. Wie ist das nicht das Problem? Bitte geben Sie code. Aus Ihrem - code und Fehler gemeldet, es klingt wie Sie irrtümlich Dokument bereit, die ein DOM-Ereignis zu referenzieren von Objekten, die nicht in dem definierten Umfang.before
Sie verweisen? Nein. Nachschlagen bevor und Sie bekommen keine undefinierten Methode, da das Objekt Zeitpunkt nicht vorhanden.. vorausgesetzt, Sie sind doch der Umgang mit "Firebug zeigt mir den undefinierten Fehler auf obj.init () - Aufruf!" ist der Fehler....