Проверка загрузки страницы
Всем привет.
Подскажите как проверить загружена ли страница. Имеется ввиду проверка состояния полной загрузки (как при событии 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, время: 06:52. |