2013-03-31 3 views
11

Мне любопытно, какое событие запускается при использовании jQuery и jQuery Mobile.Что такое первое событие, выпущенное HTML-документом?

Как ни странно, первый выход на консоль я получаю: pagebeforecreate, затем document ready, а затем onload.

Я хотел бы знать, будут ли какие-либо другие события уволены перед этими.

http://jsfiddle.net/yYGYe/2/

$('html').bind('pagebeforecreate',function(event) { 
    console.log("pagebeforecreate"); 
}); 

$(document).ready(function() { 
    console.log("document ready"); 
}); 

window.onload = function(){ 
    console.log("onload"); 
}; 
+1

Можем ли мы знать, для чего? – Alexander

+0

Это конкретно о jQuery Mobile? Потому что pagebeforecreate не является стандартным событием. – bfavaretto

+1

Возможно, вы захотите проверить http://stackoverflow.com/questions/4523954/page-lifecycle-in-javascript –

ответ

7

Что вы ищете - это комплексная визуализация жизненного цикла модели мобильных событий jQuery, эта диаграмма ниже доступна в Pro jQuery Mobile и on the author's blog:

jQuery Mobile Events Diagram - Brad Broulik

Пожалуйста, помните, что это jQuery для мобильных устройств. Список собственных событий доступен as part of the W3 spec, и единственный, относящийся к жизненному циклу документа, является старым старым load.

+1

DOM Level 3 вводит 'DOMContentLoaded', который срабатывает перед' load'. Кроме того, это должно представлять интерес: http://www.w3.org/TR/2011/WD-html5-20110113/the-end.html. – bfavaretto

+0

@bfavaretto: Я обсуждал, ссылаться ли DOM L3 на то, что это рабочий проект не поддерживается равномерно. Вы абсолютно правы, хотя, +1 –

+0

Я научился предполагать, что спецификации HTML, CSS и DOM будут в состоянии «рабочего проекта» * навсегда *! Или * I * придется ждать вечно. :) – bfavaretto

4

Ваш вопрос и реальная вещь вы спрашиваете немного отличаются.

Вы спрашиваете, что произошло с первым событием, но в контексте вы спрашиваете, является ли функция pagebeforecreate функцией вызова, если вы хотите, чтобы это было первое событие, запущенное на странице.

Если вы прочитали документацию jQuery Mobile, то это говорит о том, что pagebeforecreate вызывается до создания каких-либо «виджетов». Так что в этом вопросе; все, что вы там введете, будет называться «до» всех jQuery Mobile виджетов, но это не первое событие, запущенное на HTML-странице.

Первое событие, выпущенное на HTML-странице, возможно, document.readyState установлено как uninitialized, что указывает на то, что ваша страница еще не готова. Это все готовые состояния;

  • инициализируется (не начали загрузку еще)
  • налива (загружается)
  • интерактивных (загружены достаточно, и пользователь может взаимодействовать с ним)
  • полных (полностью нагруженными)
+0

Я считаю, что не может быть слушателей для _that_ 'readystatechange' –

+1

' document.addEventListener ('readystatechange', function (this) {...}; 'должен работать нормально :) Но исправьте меня, если я ошибаюсь. У вас нет инструментов для проверки. – 2013-03-31 23:15:41

+0

Как вы думаете, я могу зарегистрироваться вовремя для этого мероприятия? :-) –

Смежные вопросы