Я через решения в двух вопросов, связанных с этим - JQuery document.ready vs Phonegap deviceready и Correct way of using JQuery-Mobile/Phonegap together? , и я до сих пор не ближе к решению.
Наша проблема связана с плагинами PhoneGap Build. Мы используем плагин Device для ориентации определенных позиций и размеров компонентов пользовательского интерфейса на iPhone 4 и 5. При этом нам нужно вызвать прослушиватель событий, использовать плагин Device для получения модели устройства, установить переменную (iOSversion = true) а затем использовать эту переменную, когда мы создаем пользовательский интерфейс.
Мы не можем заставить его работать.
Мы используем JQuery Mobile, так что все находится в
$(document).ready(function(
Это
document.addEventListener("deviceready", false);
в нем, а также остальную часть наших скриптов и сценариев пользовательского интерфейса инициализации. jQM - это шаблон, но мы создаем компоненты контента и пользовательского интерфейса на основе данных JSON. До этого момента все было в порядке.
Проблема заключается в том, что скрипт инициализации пользовательского интерфейса, по-видимому, начинается до того, как прослушиватель событий завершил выполнение того, что он делает, и поэтому iOSversion никогда не верна к моменту запуска скрипта пользовательского интерфейса.
Да, мы могли бы назвать его из onDeviceReady в:
document.addEventListener("deviceready", onDeviceReady, false);
, но тогда мы не можем проверить в браузере.
Я уверен, что есть какое-то простое решение, которое мне не хватает, но мы были на нем уже целый день, и это последнее препятствие, и у всех все расстроены.
'mobileinit' пожары, прежде чем' .ready() '(я не знаю, о Cordova). Вы можете отключить авто-init на этом этапе, пока не получите все свои данные, а затем запустите функцию инициализации. – Omar
Вы говорите, что я должен поставить слушателя событий в mobileinit, чтобы сначала запустить плагин Cordova? –
Я не знаком с кордорой. Если вы планируете попробовать, поместите код «mobileinit» после jQuery и перед jQM-библиотекой. По крайней мере, чтобы проверить, какое событие срабатывает раньше, будь то «mobileinit» или «deviceready». На этом этапе вы можете отложить инициализацию страницы, пока не получите все необходимые данные. – Omar