Загальна ідея полягає в тому, що window.onload запускається, коли вікно документа готове до представлення, а document.onload запускається, коли дерево DOM (побудоване з коду розмітки в документі) завершено .
В ідеалі, підписка на події дерева DOM , дозволяє керувати екранами через Javascript, не приносячи майже ніякого завантаження процесора . Навпаки, це 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>
►Результат:
Ось така поведінка, яка спостерігається для Chrome v20 (і, мабуть, більшості сучасних браузерів).
- Жодної
document.onload
події.
onload
запускається двічі, коли оголошується всередині <body>
, один раз, коли оголошується всередині <head>
(де подія діє тоді якdocument.onload
).
- підрахунок та дія залежно від стану лічильника дозволяє наслідувати обидва події.
- Альтернативно оголосити
window.onload
обробник подій у межах HTML- <head>
елемента.
►Прикладний проект:
Код, наведений вище, взято з бази даних коду ( і ) цього проекту .index.html
keyboarder.js
Щоб отримати список обробників подій об’єкта вікна , зверніться до документації MDN.
window
події:onload
таDOMContentLoaded
. Приклад використання :,window.addEventListener('DOMContentLoaded', callback)
. Станом на середину 2019 року сумісний з усіма основними браузерами. ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event