Проверка загрузки страницы
Всем привет.
Подскажите как проверить загружена ли страница. Имеется ввиду проверка состояния полной загрузки (как при событии onload) а не DOMReady. Что то на подобии document.readyState только для onload. Я использую requirejs и зачастую при загрузки модуля событие onload уже произошло, а как проверять загружена ли странница не знаю. Буду очень признателен за помощь, спасибо. |
А для чего это? Можно пройтись по картинкам и проверить их состояние.
|
Это нужно для модуля роботы с DOM который можно подключить как просто модуль:
require(['dom'], function (dom) {//... Или дождаться готовность dom (DOMReady): require(['dom!ready'], function (dom) {//... А вот как правильно поверить загрузку страницы не знаю, хочу сделать что то типа: require(['dom!load'], function (dom) {//... Проверка состояния всех картинок не подходит потому что: 1) Есть ещё много элементов которые влияют на загрузки страниц типа iframe, embed ... 2) Картинки могут быть установлены как фон или псевдоэлементах |
Если document.readyState == 'complete', то событие window.load уже было.
Скорее всего тут есть проблемы с кроссбраузерностью. Думаю полезно будет посмотреть исходники jQuery. |
Я верно понимаю что document.readyState == "interactive" это DOMReady а document.readyState == "complete" это onload. Я не могу найти этому подтверждение, я думал что document.readyState == "complete" это означает что DOM готов.
Насчёт jQuery $(function () {/*вызовется даже после события готовности DOM*/ }); $(window).load(function () {/* Это событие и оно не вызовется после вызова этого метода */}); Так что можно наводку где искать? |
Цитата:
|
Там есть только проверка на document.readyState === "complete"
http://code.jquery.com/jquery-1.11.0.js строка 3449 function completed() { // readyState === "complete" is good enough for us to call the dom ready in oldIE if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { detach(); jQuery.ready(); } }Так что наверно document.readyState === "complete" нужен всё таки для DOMReady а не onload. Может я ошибаюсь поправьте если неправ. |
<script> console.log('loading: ' + document.readyState); </script> <iframe src="http://javascript.ru" frameborder="0" onload="console.log('iframe@load: ' + document.readyState);"></iframe> <script> document.addEventListener('DOMContentLoaded', function() { console.log('document@DOMContentLoaded: ' + document.readyState); }); window.onload = function() { console.log('window@load: ' + document.readyState); }; </script> |
Большое спасибо, мне только осталось разобраться с кроссбраузерностью. :thanks:
|
Часовой пояс GMT +3, время: 09:55. |