Gagasan umum adalah bahwa window.onload menyala ketika jendela dokumen siap untuk presentasi dan document.onload menyala ketika pohon DOM (dibangun dari kode markup dalam dokumen) selesai .
Idealnya, berlangganan acara DOM-tree , memungkinkan manipulasi layar-lebar melalui Javascript, hampir tanpa beban CPU . Sebaliknya, window.onloaddapat memakan waktu cukup lama untuk diaktifkan , ketika beberapa sumber daya eksternal belum diminta, diuraikan dan dimuat.
► Skenario pengujian:
Untuk mengamati perbedaan dan bagaimana browser pilihan Anda mengimplementasikan event handler yang disebutkan di atas , cukup masukkan kode berikut dalam <body>tag - - dokumen Anda .
<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>
►Hasil:
Berikut adalah perilaku yang dihasilkan, dapat diamati untuk Chrome v20 (dan mungkin sebagian besar browser saat ini).
- Tidak ada
document.onloadacara
onloadKebakaran dua kali ketika dinyatakan di dalam <body>, sekali ketika dinyatakan di dalam <head>(di mana acara tersebut bertindak sebagai document.onload).
- berhitung dan bertindak tergantung pada keadaan penghitung memungkinkan untuk meniru kedua perilaku acara.
- Atau deklarasikan
window.onloadevent handler dalam batas-batas <head>elemen HTML .
► Proyek Contoh:
Kode di atas diambil dari basis kode proyek ini ( index.htmldan keyboarder.js).
Untuk daftar penangan kejadian objek jendela , silakan merujuk ke dokumentasi MDN.
windowperistiwa ini :onloaddanDOMContentLoaded. Contoh penggunaan :,window.addEventListener('DOMContentLoaded', callback). Pada pertengahan 2019, kompatibel dengan semua browser utama. ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event