Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.05.2014, 00:02
Интересующийся
Отправить личное сообщение для dima_zluka Посмотреть профиль Найти все сообщения от dima_zluka
 
Регистрация: 20.03.2011
Сообщений: 12

Проверка загрузки страницы
Всем привет.

Подскажите как проверить загружена ли страница. Имеется ввиду проверка состояния полной загрузки (как при событии onload) а не DOMReady. Что то на подобии document.readyState только для onload.

Я использую requirejs и зачастую при загрузки модуля событие onload уже произошло, а как проверять загружена ли странница не знаю.

Буду очень признателен за помощь, спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 02.05.2014, 05:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А для чего это? Можно пройтись по картинкам и проверить их состояние.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2014, 14:28
Интересующийся
Отправить личное сообщение для dima_zluka Посмотреть профиль Найти все сообщения от dima_zluka
 
Регистрация: 20.03.2011
Сообщений: 12

Это нужно для модуля роботы с DOM который можно подключить как просто модуль:
require(['dom'], function (dom) {//...

Или дождаться готовность dom (DOMReady):
require(['dom!ready'], function (dom) {//...

А вот как правильно поверить загрузку страницы не знаю, хочу сделать что то типа:
require(['dom!load'], function (dom) {//...


Проверка состояния всех картинок не подходит потому что:
1) Есть ещё много элементов которые влияют на загрузки страниц типа iframe, embed ...
2) Картинки могут быть установлены как фон или псевдоэлементах
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2014, 15:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если document.readyState == 'complete', то событие window.load уже было.
Скорее всего тут есть проблемы с кроссбраузерностью. Думаю полезно будет посмотреть исходники jQuery.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2014, 16:25
Интересующийся
Отправить личное сообщение для dima_zluka Посмотреть профиль Найти все сообщения от dima_zluka
 
Регистрация: 20.03.2011
Сообщений: 12

Я верно понимаю что document.readyState == "interactive" это DOMReady а document.readyState == "complete" это onload. Я не могу найти этому подтверждение, я думал что document.readyState == "complete" это означает что DOM готов.

Насчёт jQuery
$(function () {/*вызовется даже после события готовности DOM*/ });

$(window).load(function () {/* Это событие и оно не вызовется после вызова этого метода */});

Так что можно наводку где искать?
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2014, 16:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от dima_zluka
Так что можно наводку где искать?
В обработке ready. Там помимо DOMContentLoad еще много чего. В том числе работа с document.readyState и событием window@load.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 02.05.2014, 17:58
Интересующийся
Отправить личное сообщение для dima_zluka Посмотреть профиль Найти все сообщения от dima_zluka
 
Регистрация: 20.03.2011
Сообщений: 12

Там есть только проверка на 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.
Может я ошибаюсь поправьте если неправ.
Ответить с цитированием
  #8 (permalink)  
Старый 02.05.2014, 18:31
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<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>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 02.05.2014, 19:52
Интересующийся
Отправить личное сообщение для dima_zluka Посмотреть профиль Найти все сообщения от dima_zluka
 
Регистрация: 20.03.2011
Сообщений: 12

Большое спасибо, мне только осталось разобраться с кроссбраузерностью.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавный скролл к якорю после загрузки страницы pro100lexx87 jQuery 7 17.01.2014 14:13
Событие загрузки кода страницы Oren2014 Opera, Safari и др. 2 05.12.2013 12:30
есть ли функция проверка 'сборки страницы' после загрузки asdasd Общие вопросы Javascript 2 04.04.2012 13:48
Как имитировать клик по элементу созданого после загрузки страницы? anoth3r jQuery 3 29.09.2011 12:22
Как сделать паузу после загрузки страницы? denisOgr AJAX и COMET 2 06.08.2011 15:01