Ý tưởng chung là window.onload kích hoạt khi cửa sổ của tài liệu sẵn sàng để trình bày và document.onload kích hoạt khi cây DOM (được xây dựng từ mã đánh dấu trong tài liệu) được hoàn thành .
Lý tưởng nhất là đăng ký các sự kiện của cây DOM , cho phép các thao tác ngoài màn hình thông qua Javascript, phát sinh gần như không tải CPU . Ngược lại, window.onloadcó thể mất một lúc để kích hoạt , khi nhiều tài nguyên bên ngoài chưa được yêu cầu, phân tích cú pháp và tải.
► Kịch bản thử nghiệm:
Để quan sát sự khác biệt và cách trình duyệt lựa chọn của bạn thực hiện các trình xử lý sự kiện đã nói ở trên , chỉ cần chèn mã sau vào trong <body>thẻ - tài liệu của bạn .
<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:
Dưới đây là hành vi kết quả, có thể quan sát được đối với Chrome v20 (và có lẽ là hầu hết các trình duyệt hiện tại).
- Không có
document.onloadsự kiện.
onloadbắn hai lần khi được khai báo bên trong <body>, một lần khi được khai báo bên trong <head>(khi đó sự kiện sẽ đóng vai trò document.onload).
- đếm và hành động phụ thuộc vào trạng thái của bộ đếm cho phép mô phỏng cả hai hành vi sự kiện.
- Hoặc khai báo
window.onloadtrình xử lý sự kiện trong giới hạn của <head>phần tử HTML .
► Dự án mẫu:
Mã ở trên được lấy từ cơ sở mã của dự án này ( index.htmlvà keyboarder.js).
Để biết danh sách các trình xử lý sự kiện của đối tượng cửa sổ , vui lòng tham khảo tài liệu MDN.
windowsự kiện này :onloadvàDOMContentLoaded. Ví dụ sử dụng:,window.addEventListener('DOMContentLoaded', callback). Tính đến giữa năm 2019, tương thích với tất cả các trình duyệt chính. ----- developer.mozilla.org/en-US/docs/Web/API/Window/ Khăn ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event