Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   window.onload или window.addEventListener? (https://javascript.ru/forum/misc/61134-window-onload-ili-window-addeventlistener.html)

ZingerY 05.02.2016 19:33

window.onload или window.addEventListener?
 
window.onload = main();

или
window.addEventListener("load", main);

Когда я начал изучать js мне показали второй вариант который я постоянно и использую, но в интернетах рекомендуют первый вариант.
Так какой вариант запуска кода после загрузки страницы все таки лучше или это одно и тоже?

ruslan_mart 05.02.2016 20:07

ZingerY, addEventListener используется для нескольких обработчиков. Свойство onload, конечно, использовать удобнее, но есть вероятность случайно перезаписать его.

В общем, onload - это если Вам нужен только один обработчик.

К примеру:

window.onload = function() {
   alert(1);
};

window.onload = function() {
   alert(2);
};

//Выведется только "2", так как идёт перезапись свойства.



window.addEventListener('load', function() {
   alert(1);
});

window.addEventListener('load', function() {
   alert(2);
});

//Выполнятся оба обработчика



А если по делу, то для отлова загрузки документа, я бы Вам советовал использовать DOMContentLoaded, так как onload срабатывает только после окончания загрузки всех изображений и т.д.

window.addEventListener('DOMContentLoaded', function() {
   alert('Ready!');
});



Цитата:

Сообщение от ZingerY
но в интернетах рекомендуют первый вариант.
Так какой вариант запуска кода после загрузки страницы все таки лучше или это одно и тоже?

Второй вариант лучше и правильней.
Ну а если говорить об удобстве, то - первый.

ZingerY 05.02.2016 20:19

Ruslan_xDD,
Большое спасибо за подробные разъяснения!
Теперь благодаря вам мои странички будут загружаться намного быстрее)

hhh 05.02.2016 21:21

Ruslan_xDD,
DOMContentLoaded, то же самое что и document.ready в jquery?

Mess4me 05.02.2016 21:27

hhh,
:yes:

ruslan_mart 05.02.2016 22:24

hhh, да, аналогично вставки скриптов в конец body.


Часовой пояс GMT +3, время: 11:55.