2013-08-14 2 views
0

При создании моего приложения я создал его с помощью JQueryMobile. У меня все работает, включая использованиеPhoneGap/JQueryMobile Страницы не инициализируются

jquery($document).on('pageinit','#someID',function(){ ...}); 

Transitions работал большой ... перемещение на новые страницы работали нормально во всех браузерах.

Затем я установил его с помощью PhoneGap 2.9.0. Я добавил включить cordova.js. Инициализировало приложение, а также добавило var app =; в мой файл main.js. Функция, вызываемая внутри приложения var, в основном представляет собой фиктивную функцию, которая завершает все мои вызовы на странице. Я не могу заставить его работать больше и на основе записей window.console.log. Я знаю, что вызовов на странице не происходит.

Мой вопрос является одним из отчаяния, так как я потратил слишком много времени для клиента по этому вопросу. Что мне делать, чтобы мои страницы стреляли? Я уверен, что это суть проблемы.

здесь jsfiddle - http://jsfiddle.net/3Nz9t/. Это ничего не изменит. Но это даст вам представление о том, что я описал выше.

+0

Вы пытались настроить рабочий телефон с помощью руководства по [iOS Platform] (http://docs.phonegap.com/en/edge/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide), а затем вставить свой код в это приложение? – Ignitor

+0

Да, это то, что я сделал, чтобы начать. – theShadraq

ответ

0

Спасибо всем, кто разделяет и помощь меня. В конце концов, я сделал некоторые исследования и немного болезненно медленную отладку и пришел к решению ниже.

В случае, если кто-нибудь столкнется с этим, задаваясь вопросом, как я это исправил.

Оставьте все ваши вызовы на странице JQueryMobile как есть. Загрузите их так же, как на веб-сайте. Сопротивляйтесь желанию поместить их в функцию app.initialize(). Проблема возникает в том случае, когда внутри страницы вы используете функцию, полагающуюся на плагин, который должен появиться в сети во время app.initialize(). На этом этапе все плагины для PhoneGap должны появиться в сети.

Чтобы обойти эту проблему, я добавил код, расположенный в jsFiddle ранее как для моего файла main.js и моя <script type="text/javascript">app.initialize();</script>: http://jsfiddle.net/BtzJJ/

* Обратите внимание, скрипка не будет оказывать, он там просто, чтобы продемонстрировать свою код.

Важно отметить, что я создаю var и устанавливаю его в false. Затем этот var просматривается внутри моей страницы. Поскольку var = 0, часть моего init в зависимости от моего плагина пропускается.Это позволяет загружать мои страницы с использованием JQueryMobile.

Теперь, внутри HTML, мы видим, что я определил как приложение var, так и мою функцию onDeviceReady. Внутри моей функции я включаю свой файл js plugin. В середине включения этого файла я запускаю функцию, которая вызывает код из страницы, которая была пропущена через

Надеюсь, это поможет вам сэкономить некоторое время.

1

Вы должны привязать к DeviceReady вместо pageinit.

+0

как бы я это сделал? – theShadraq

+0

@ theShadraq Вы уже это делаете. Это строка 'addEventListener ('deviceready', ...). Однако, возможно, это называется слишком поздно. Это может помочь, если вы можете предоставить весь код HTML. – Ignitor

+0

Я думаю, что смена «pageinit» на «deviceready» должна работать. –

0

Похоже, вы пытаетесь запустить приложение с помощью PhoneGap в обычном браузере. IIRC, PhoneGap, как ожидается, не будет работать в обычных браузерах. Событие deviceready не будет запущено в обычном браузере. Для работы PhoneGap вам необходимо создать приложение Android/iOS/..., используя один из способов, описанных в Getting Started guides.

Однако, если вы хотите, чтобы проверить приложение в обычном браузере, есть phonegap-desktop, который приносит подкладку cordova.js, который имитирует PhoneGap API.

+0

Я фактически запускаю его в xCode – theShadraq

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