แนวคิดทั่วไปคือว่าไฟไหม้ window.onloadเมื่อหน้าต่างของเอกสารคือเตรียมตัวให้พร้อมสำหรับการนำเสนอและdocument.onload ไฟไหม้เมื่อต้นไม้ DOM (สร้างจากรหัสที่มาร์กอัปภายในเอกสาร) จะเสร็จสมบูรณ์
จะเป็นการดีที่สมัครรับเหตุการณ์ DOM ต้นไม้ช่วยให้ Offscreen-กิจวัตรผ่าน Javascript ที่เกิดขึ้นเกือบจะไม่มีภาระของ CPU ในทางตรงกันข้ามwindow.onload
อาจใช้เวลาสักครู่ในการเริ่มต้นเมื่อทรัพยากรภายนอกหลายอย่างยังไม่ได้รับการร้องขอแยกวิเคราะห์และโหลด
►สถานการณ์ทดสอบ:
ในการสังเกตความแตกต่างและวิธีที่เบราว์เซอร์ที่คุณเลือกใช้เครื่องมือจัดการเหตุการณ์ดังกล่าวเพียงแค่ใส่รหัสต่อไปนี้ใน<body>
แท็ก - - ของเอกสาร
<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>
►Result:
นี่คือพฤติกรรมที่เกิดขึ้นซึ่งสามารถมองเห็นได้สำหรับ Chrome v20 (และอาจเป็นเบราว์เซอร์ล่าสุด)
- ไม่มี
document.onload
เหตุการณ์
onload
ไฟไหม้สองครั้งเมื่อประกาศภายใน<body>
ครั้งเดียวเมื่อประกาศภายใน<head>
(ที่เหตุการณ์นั้นทำหน้าที่เป็นdocument.onload
)
- การนับและการแสดงขึ้นอยู่กับสถานะของตัวนับอนุญาตให้เลียนแบบพฤติกรรมของเหตุการณ์ทั้งสอง
- หรือประกาศ
window.onload
ตัวจัดการเหตุการณ์ภายในขอบเขตของ<head>
องค์ประกอบHTML
►ตัวอย่างโครงการ:
รหัสข้างต้นนำมาจากcodebase ของโครงการนี้ ( index.html
และkeyboarder.js
)
สำหรับรายการตัวจัดการเหตุการณ์ของวัตถุหน้าต่างโปรดดูเอกสารประกอบของ MDN
window
เหตุการณ์: และonload
DOMContentLoaded
ตัวอย่างการใช้งาน:,window.addEventListener('DOMContentLoaded', callback)
. ราวกลางปี 2562 เข้ากันได้กับเบราว์เซอร์หลักทั้งหมด ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event