Подтвердить что ты не робот

Связь между функциями Phonegap on onBodyLoad()/onDeviceReady() и JQuery "$ (document).ready()"

Я использую PhoneGap + jQuery Mobile в Android, я путаюсь о функциях Phonegap onBodyLoad()/onDeviceReady() и JQuery "$ (document).ready()".

В документах PhoneGap:

PhoneGap состоит из двух базовых кодов: родной и JavaScript. В то время нативный код загружается, пользовательский отображается загрузочное изображение. Однако, JavaScript загружается только после DOM грузы. Это означает, что ваше веб-приложение может, потенциально, вызвать PhoneGap Функция JavaScript перед тем, как загружен.

Событие PhoneGap deviceready срабатывает когда PhoneGap полностью загружен. После устройство уволилось, вы можете безопасно совершает вызовы функции PhoneGap.

Как правило, вы захотите прослушиватель событий с document.addEventListener после Документ HTML DOM загружен.

В jQuery doc:

Пока JavaScript предоставляет нагрузку событие для выполнения кода, когда страница, это событие не получается срабатывает до тех пор, пока все активы, такие как изображения были полностью получены. В большинстве случаев может выполняться scriptкак только иерархия DOM полностью построенный. Обработчик прошел toready() гарантированно будет выполняется после того, как DOM готов, поэтому это, как правило, лучшее место для присоединить все другие обработчики событий и запустить другой код jQuery. Когда используешь скрипты, которые полагаются на значение CSS свойства стиля, важно ссылки на внешние таблицы стилей или вставлять элементы стиля до ссылаясь на сценарии.

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

Мои эксперименты показывают, что ready() всегда раньше, чем onDeviceReady(), как это объяснить? Как их использовать? Должен ли я поставить ready() в onDeviceReady(), чтобы сделать каждый вызов безопасным?

Спасибо заранее.

С уважением, Крис

4b9b3361

Ответ 1

$(document).ready всегда будет запускаться первым, потому что он запускается, когда все элементы DOM загружены. Изображения, функции javascript, css и т.д. Могут не загрузиться к этому времени.

Итак, PhoneGap вы поместили метод onload в тело onload, чтобы он срабатывал, когда эта часть DOM была готова. Когда DOM подготовлен, вы создаете прослушиватель событий, чтобы убедиться, что сам phonegap.js(и не только пользовательский интерфейс приложения, например). Только после загрузки phonegap.js вы можете использовать функции, которые он предоставляет.

Итак, да, $(document).ready будет срабатывать первым, но это не значит, что вы можете использовать phonegap.js(вызовы "api" ). Вы не можете поместить $(document).ready внутри другой функции (насколько я знаю), так как она запускается загружаемой DOM. Вы можете (но не должны) использовать функцию onDeviceReady от $(document).ready. Проблема в том, что если устройство НЕ действительно готово, вызовы api не будут выполнены.

Поэтому я бы продолжил использовать тело onLoad/onDeviceReady, которое они создали. Дайте мне знать, если это требует дополнительной разработки.