Ogólna idea jest, że pożary window.onload gdy okno Dokument jest gotowy do prezentacji i document.onload pożarów , gdy drzewa DOM (zbudowany z kodu znaczników w dokumencie) jest zakończona .
Idealnie, subskrybowanie zdarzeń drzewa DOM , pozwala na manipulowanie poza ekranem za pomocą Javascript, nie powodując prawie żadnego obciążenia procesora . Przeciwnie, uruchomieniewindow.onload może zająć trochę czasu , gdy wiele zewnętrznych zasobów musi być jeszcze wymaganych, przeanalizowanych i załadowanych.
► Scenariusz testowy:
Aby zaobserwować różnicę i sposób, w jaki wybrana przeglądarka implementuje wyżej wymienione procedury obsługi zdarzeń , wystarczy wstawić następujący kod w <body>znaczniku - - dokumentu .
<script language="javascript">
window.tdiff = []; fred = function(a,b){return a-b;};
window.document.onload = function(e){
console.log("document.onload", e, Date.now() ,window.tdiff,
(window.tdiff[0] = Date.now()) && window.tdiff.reduce(fred) );
}
window.onload = function(e){
console.log("window.onload", e, Date.now() ,window.tdiff,
(window.tdiff[1] = Date.now()) && window.tdiff.reduce(fred) );
}
</script>
► Wynik:
Oto wynikowe zachowanie, które można zaobserwować w przeglądarce Chrome v20 (i prawdopodobnie w większości obecnych przeglądarek).
- Brak
document.onloadzdarzenia
onloadodpala dwa razy, gdy zostanie zadeklarowany w środku <body>, raz, gdy zostanie zadeklarowany w środku <head>(gdzie zdarzenie działa jak document.onload).
- liczenie i działanie zależne od stanu licznika pozwala naśladować oba zachowania zdarzeń.
- Ewentualnie zadeklaruj
window.onloadmoduł obsługi zdarzeń w ramach <head>elementu HTML .
►Przykładowy projekt:
Powyższy kod pochodzi z bazy kodu tego projektu ( index.htmli keyboarder.js).
Aby uzyskać listę procedur obsługi zdarzeń obiektu okna , zapoznaj się z dokumentacją MDN.
windowzdarzenia:onloadiDOMContentLoaded. Przykład użycia :,window.addEventListener('DOMContentLoaded', callback). Od połowy 2019 r. Kompatybilny ze wszystkimi głównymi przeglądarkami. ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event