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.onload
dapat 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.onload
acara
onload
Kebakaran 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.onload
event handler dalam batas-batas <head>
elemen HTML .
► Proyek Contoh:
Kode di atas diambil dari basis kode proyek ini ( index.html
dan keyboarder.js
).
Untuk daftar penangan kejadian objek jendela , silakan merujuk ke dokumentasi MDN.
window
peristiwa ini :onload
danDOMContentLoaded
. 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