Fenster.onload-vs $(document).ready()
Was sind die Unterschiede zwischen JavaScript, Fenster.onload
und jQuery $(document).ready()
Methode?
möglich, Duplikat der $(document).bereit entspricht, ohne jQuery
InformationsquelleAutor Vaibhav Jain | 2010-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
ready
Ereignis tritt auf, nachdem das HTML-Dokument geladen wurde, während dieonload
Ereignis später Eintritt, wenn alle Inhalte (z.B. Bilder) auch geladen wurde.Den
onload
Veranstaltung ist eine standard-Veranstaltung im DOM, während dieready
Veranstaltung ist spezifisch für jQuery. Der Zweck derready
Fall ist, sollte es so bald wie möglich erfolgen, nachdem das Dokument geladen wurde, so dass code, fügt Funktionalität, um die Elemente in die Seite muss nicht warten, bis alle Inhalte geladen werden.ready
- Ereignis ist speziell für jQuery. Es ist dieDOMContentLoaded
Ereignis, wenn es im browser zur Verfügung, sonst wird es emuliert. Es gibt keine genaue Entsprechung in den DOM, weil dieDOMContentLoaded
Ereignis wird nicht unterstützt in allen Browsern.Ok, aber das gleiche Ergebnis vorhanden ist, mit DOMContentLoaded, vielleicht sollten Sie dies angegeben haben
Ich glaube nicht, dass es releveant auf die Frage, und ich immer noch nicht.
nicht gleiche Ergebnis, document-ready-handler ausgelöst wird, auch setted nach dem DOM ist tatsächlich bereit, mit einem Versprechen.
DOMContentLoaded
nicht. So dokumentieren jquery-ready-handler kann wirklich nützlich sein, wenn setted in externen script laden asynchronWieso der downvote? Wenn Sie nicht erklären, was es ist, dass Sie denken, ist falsch, es kann nicht besser die Antwort.
InformationsquelleAutor Guffa
window.onload
ist der built-in JavaScript-event, sondern dessen Umsetzung hatte subtile Macken allen Browsern (Firefox, Internet Explorer 6, Internet Explorer 8 und Opera), jQuery bietetdocument.ready
, die abstracts diese entfernt, und feuert, sobald das DOM der Seite fertig ist (nicht warten, für Bilder etc.).$(document).ready
(beachten Sie, dass es nichtdocument.ready
, die nicht definiert ist) ist eine jQuery-Funktion, die Verpackung und die Bereitstellung Konsistenz auf die folgenden Ereignisse:document.ondomcontentready
/document.ondomcontentloaded
- ein neuartiges Ereignis, das feuert, wenn das Dokument das DOM geladen ist (das kann einige Zeit vor die Bilder, etc. geladen sind); wieder etwas anders bei Internet Explorer und im rest der Weltwindow.onload
(die auch in alten Browsern), die ausgelöst wird, wenn die gesamte Seite geladen (Bilder, styles, etc).load
Fallewindow
implementiert ist halbwegs konstant in allen Browsern. Das problem, dass jQuery und andere Bibliotheken zu lösen versuchen, die Sie erwähnt, ist, dass dieload
- Ereignis nicht ausgelöst wird, bis alle abhängigen Ressourcen wie Bilder und stylesheets geladen haben, könnte eine lange Zeit, nachdem das DOM vollständig geladen, gerendert und bereit für die Interaktion. Den Fall, dass Brände in den meisten Browsern, wenn das DOM bereit ist genanntDOMContentLoaded
, nichtDOMContentReady
.Unten: vernünftig ist das Stichwort hier; zumindest einige Objekt-sniffing verwendet werden, notwendig, sogar mit
onload
(es gibt Unterschiede wrt-FF/IE/Opera). Für dieDOMContentLoaded
Sie sind völlig richtig. Bearbeitung zu klären.Welche Art von Objekt sniffing meinst du?
Down: ich weiß, dass Oper hatte, aber das Ereignis auslösen, auf es war etwas schrullig (sicher auszulösen,
document.onload
brauchbar war). Wie weit das Fenster.onload geht:window.onload = fn1;window.onload=fn2;
- nur fn2 bekommen würde onload aufgerufen. Einige freie webhosts einfügen Ihrer eigenen code in die Dokumente, und manchmal verändern sich die in-page-code.Nicht schreiben " - Dokument.bereit" falsch? das document-Objekt nicht über eine Methode bereit, die jQuery-Objekt nicht zurückgegeben wird, die von $(document) nennen. Bitte Bearbeiten Sie diese Antwort, wenn ich Recht habe, weil das ist schon sehr verwirrend.
InformationsquelleAutor Piskvor
$(document).ready()
ist ein jQuery-event. JQuery$(document).ready()
Methode wird aufgerufen, sobald das DOM bereit ist (was bedeutet, dass der browser analysiert die HTML-und baute den DOM-Baum). Dadurch können Sie code ausführen, sobald das Dokument bereit ist, manipuliert zu werden.Zum Beispiel, wenn ein browser unterstützt das DOMContentLoaded-Ereignis (wie viele nicht-IE-Browsern nicht), dann wird es das Feuer auf das event. (Beachten Sie, dass das DOMContentLoaded-Ereignis wurde nur Hinzugefügt, um IE in IE9+.)
Beiden Syntaxen können verwendet werden für:
Oder die kürzere version:
Wichtigsten Punkte für
$(document).ready()
:$
mitjQuery
wenn Sie " $ " ist nicht definiert."$(window).load()
statt.window.onload()
ist eine native JavaScript-Funktion. Diewindow.onload()
event feuert, wenn alle Inhalte auf Ihrer Seite hat geladen, darunter DOM (document object model), banner-anzeigen und-Bilder. Ein weiterer Unterschied zwischen den beiden ist, dass, während wir mehr als eine$(document).ready()
Funktion, wir können nur eineonload
Funktion.Sie sind richtig, also bearbeitete ich die Antwort zu reflektieren, Ihren Kommentar und vielen Dank!
Sie sagen: "Es wird nicht warten, bis die Bilder geladen werden." was ist mit den anderen Dateien, js am wichtigsten? Oft vor dem Aufruf der Funktion aus einer anderen Datei - ich muss wissen, wenn es geladen wird.
Dies ist ein anderes Thema insgesamt, aber wenn ich verstehe, was Sie Fragen, es basiert auf, wie Sie die Struktur Ihrer Seiten, einschließlich dessen, was um Sie legen den js-Dateien. Hier ist ein link, der geht mehr ins detail: ablogaboutcode.com/2011/06/14/... HTH, James
Auch, Ihre $(document).ready () nicht dokumentiert.ready().
InformationsquelleAutor James Drinkard
Einen Windows laden Ereignis wird ausgelöst, wenn alle der Inhalte auf Ihrer Seite vollständig geladen ist, darunter DOM (document object model) Inhalte und asynchronous JavaScript, frames und Bilder. Sie können auch body onload=. Beide sind die gleichen;
window.onload = function(){}
und<body onload="func();">
sind die verschiedenen Möglichkeiten der Verwendung der gleichen Veranstaltung.jQuery
$document.ready
Funktion-Ereignis wird ausgeführt, ein wenig früher alswindow.onload
und wird aufgerufen, sobald das DOM(Document object model) geladen ist auf Ihrer Seite. Es wird nicht warten für die Bilder, frames, um voll und ganz laden.Genommen aus dem folgenden Artikel:
wie
$document.ready()
unterscheidet sich von- Fenster.onload()
Ich könnte Zustimmen, wenn es nicht kopiert Wort-für-Wort.
InformationsquelleAutor Vivek
Ein Wort der Vorsicht über die Verwendung
$(document).ready()
mit Internet Explorer. Wenn eine HTTP-Anforderung unterbrochen wird vor das gesamte Dokument geladen ist (zum Beispiel, wenn eine Seite das streaming an den browser, wird ein anderer link angeklickt wird) IE löst die$(document).ready
Veranstaltung.Wenn jeglicher code innerhalb der
$(document).ready()
event Referenzen DOM-Objekte, die Möglichkeit, für diese Objekte nicht gefunden werden, und Javascript-Fehler auftreten. Entweder schützen Sie Ihre Referenzen auf die Objekte, oder aufschieben code Referenzen auf diese Objekte, um das Fenster.load-Ereignis.Ich nicht in der Lage dieses problem zu reproduzieren, in anderen Browsern (insbesondere Chrome und Firefox)
IE6, 7 und 8. Siehe: stackoverflow.com/questions/13185689/...
Gut zu wissen, danke!
InformationsquelleAutor deck
Veranstaltungen
$(document).on('ready', handler)
bindet an das Ereignis ready von jQuery. Der handler wird aufgerufen,, wenn das DOM geladen ist. Vermögenswerte wie Bilder vielleicht noch fehlen. Es wird nie aufgerufen, wenn das Dokument bereit ist zum Zeitpunkt der Bindung. jQuery verwendet die DOMContentLoaded-Ereignis für die, die Emulation, die, wenn nicht vorhanden.$(document).on('load', handler)
ist ein event, dass gefeuert wird, sobald alle Ressourcen geladen vom server. Bilder sind jetzt geladen. Während onload ist eine Reine HTML-Ereignis, bereit ist gebaut von jQuery.Funktionen
$(document).ready(handler)
ist eigentlich ein Versprechen. Der hf wird sofort aufgerufen, wenn das Dokument bereit ist zum Zeitpunkt der Berufung. Ansonsten bindet es an dieready
-Event.Vor jQuery 1.8,
$(document).load(handler)
existierte als alias$(document).on('load',handler)
.Weiter Lesen
Ich glaube, Sie waren verwirrt von
$.fn.load
, die sich nicht als event-binder nicht mehr. In der Tat, es ist veraltet, seit jquery 1.8. Ich aktualisiert es entsprechendyap! genau, danke 🙂
InformationsquelleAutor
Fenster.onload: Einer normalen JavaScript-Ereignis.
Dokument.bereit: Eine bestimmte jQuery-Ereignis aus, wenn das gesamte HTML geladen wurde.
InformationsquelleAutor Amir Mehdi Delta
Den
$(document).ready()
ist ein jQuery Ereignis, das tritt auf, wenn das HTML-Dokument vollständig geladen wurde, während diewindow.onload
Ereignis später Eintritt, wenn alles, einschließlich der Bilder auf der Seite geladen.Auch Fenster.onload ist ein reines javascript-event im DOM, während die
$(document).ready()
Veranstaltung ist eine Methode in jQuery.$(document).ready()
ist in der Regel die wrapper für jQuery, um sicherzustellen, dass alle Elemente geladen werden, verwendet jQuery...Blick auf jQuery source code zu verstehen, wie es funktioniert:
Ebenfalls erstellt habe ich das Bild unten als Referenzen für beide:
InformationsquelleAutor Alireza
Document.ready
(ein jQuery-event) ausgelöst wird, wenn alle Elemente vorhanden sind, und Sie verwiesen werden kann, in dem JavaScript-code, aber der Inhalt ist nicht unbedingt geladen werden.Document.ready
ausgeführt wird, wenn das HTML-Dokument geladen ist.Den
window.load
jedoch warten, bis die Seite vollständig geladen werden. Dies umfasst die inneren frames, Bilder, etc.InformationsquelleAutor Mike Clark
Eine Sache zu Bedenken (oder sollte ich sagen-recall) ist, dass man nicht stack
onload
s wie können Sie mitready
. In anderen Worten, jQuery-Magie ermöglicht mehrereready
s auf der gleichen Seite, aber Sie können nicht tun, mitonload
.Den letzten
onload
sonst alle vorherigenonload
s.Ein schöner Weg, um damit umzugehen, ist eine Funktion, mit der anscheinend geschrieben von Simon Willison und beschrieben in Die Verwendung Mehrerer JavaScript-Onload-Funktionen.
InformationsquelleAutor Donald A Nummer Jr
Dokument.ready-Ereignis tritt ein, wenn das HTML-Dokument geladen wurde, und die
window.onload
Ereignis tritt immer später ein, wenn alle Inhalte (Bilder, etc) geladen wurde.Können Sie die
document.ready
Ereignis, wenn Sie eingreifen wollen "früh" in den rendering-Prozess, ohne zu warten, für die Bilder zu laden.Wenn Sie die Bilder (oder sonstige "Inhalte") bereit, bevor das Skript "etwas tut", müssen Sie warten, bis
window.onload
.Zum Beispiel, wenn Sie die "Slide Show" - Muster, und Sie müssen, um Berechnungen, basierend auf der Bildgröße, möchten Sie vielleicht zu warten, bis
window.onload
. Sonst erleben Sie möglicherweise einige zufällige Probleme, je nachdem, wie schnell die Bilder geladen werden. Dein script gleichzeitig ausgeführt werden mit dem thread, der lädt die Bilder. Wenn Ihr Skript ist lang genug, oder der server ist schnell genug, Sie können nicht bemerkt ein problem, wenn die Bilder ankommen geschehen in der Zeit. Aber die sicherste Praxis wäre so für Bilder geladen werden.document.ready
könnte ein schönes event für Sie zu zeigen, einige "loading..." melden Sie sich an Benutzer, und aufwindow.onload
können Sie eine vollständige Script, das die benötigten Ressourcen geladen werden, und schließlich entfernen Sie die "Laden..." - Zeichen.Beispiele :-
InformationsquelleAutor Nimesh khatri
window.onload
ist eine in JavaScript eingebaute Funktion.window.onload
ausgelöst, wenn die HTML-Seite geladen.window.onload
geschrieben werden können, nur einmal.document.ready
ist eine Funktion der jQuery-Bibliothek.document.ready
ausgelöst, wenn die HTML-und die JavaScript-code, CSS-Dateien und Bilder enthalten sind, die in die HTML-Datei vollständig geladen sind.document.ready
geschrieben werden können, mehrfach nach Bedarf.InformationsquelleAutor Amit
Wenn Sie sagen
$(document).ready(f)
Sie sagen, script-engine, um Folgendes zu tun:$
und wählen Sie es aus, da es nicht im lokalen Bereich, muss er ein hash-lookup-Tabelle, die möglicherweise oder möglicherweise nicht haben Kollisionen.ready
des ausgewählten Objekts, die mit einer anderen hash-Tabelle-lookup in das ausgewählte Objekt zu finden, die Methode und rufen Sie die Vervollständigung auf.Im besten Fall ist dies 2 hash-Tabellen lookups, aber das ignorieren die schwere Arbeit, jQuery, wo
$
ist die Spüle der alle möglichen Eingaben von jQuery, also eine andere Karte dürfte es bis zum Versand der Abfrage zu korrigieren handler.Alternativ, Sie könnten dies tun:
die
onload
ist eine Eigenschaft oder nicht, indem eine hash-lookup-Tabelle, da ist es, es heißt wie eine Funktion.Im besten Fall werden diese Kosten einem einzelnen hash-lookup-Tabelle, die notwendig ist, weil
onload
heruntergeladen werden müssen.Idealerweise jQuery zusammenstellen würde, Ihre Abfragen auf strings eingefügt werden können, zu tun, was Sie wollten jQuery zu tun, aber ohne die runtime Versand von jQuery. Auf diese Weise haben Sie die Möglichkeit entweder
eval
.InformationsquelleAutor Dmitry