2013-11-07 5 views
0

Я использую phonegap 2.9.0 в сборке Phonegap и тестировании на своем устройстве Android.Phonegap и JQuery Мобильная регистрация, телефонная книга 2.9.0

Я не уверен, как регистрировать события Phonegap и JQuery Mobile, поэтому я добавил следующий код (найденный здесь Correct event registration in the 'PhoneGap + jQuery Mobile' application) в верхней части моего файла boarddo.js ... и ничего не происходит, все заблокировано при всплеске страница:

var jqmReadyDeferred = $.Deferred(); 

document.addEventListener("deviceReady", deviceReady, false); 

function deviceReady() { 
    deviceReadyDeferred.resolve(); 
} 

$(document).one("mobileinit", function() { 
    jqmReadyDeferred.resolve(); 
}); 

$.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded); 

function doWhenBothFrameworksLoaded() { 
    console.log('both frameworks are loaded'); 
    alert('both frameworks are loaded'); 
//....NOTHING POPS UP !! 
} 

//then I do my things : 
$(document).on('pageinit','#splash-page', function(){ 
    //... 
}); 
function checkConnection() { 
    //... 
} 
$(document).on('pagebeforecreate', '#welcome-page', function(){ 
    //... 
}); 
$(document).on('pageinit','#welcome-page', function(){ 
    //... 
}); 

Я смущен о том, как зарегистрировать события для PhoneGap + Jquery мобильных приложений, как я видел разные мнения повсюду.

В моем index.html, является ли обращение к js-файлам в правильном порядке? :

<script src="js/jquery-1.9.1.js"></script> 
<script src="js/jquery.mobile.config.js"></script> 
<script src="js/jquery.mobile-1.3.2.js"></script> 
<script src="js/jquery-geturlvar.js"></script> 
<script src="js/functions.js"></script> 
<script src="js/boarddo.js"></script> 

ответ

0

Для меня лучшая инициализации/регистрация рутиной для Jquery Mobile и PhoneGap является следующим, что позволяет запускать приложение в пределах PhoneGap, а также чистое веб-приложение в стандартном браузере:

var deviceReadyDeferred = $.Deferred(); 
var jqmReadyDeferred = $.Deferred(); 

$(document).one("mobileinit", function() { 
    console.log('JQM is ready'); 
    jqmReadyDeferred.resolve(); 
}); 

if (isPhoneGap()) { 
    console.log("Running on PhoneGap!"); 
    document.addEventListener("deviceReady", onDeviceReady, false); 
    function onDeviceReady() { 
     console.log('after :deviceReadyDeferred is '+deviceReadyDeferred.state()); 
     deviceReadyDeferred.resolve(); 
    } 

    $.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded); 
    function doWhenBothFrameworksLoaded() { 
     alert('success :deviceReadyDeferred is '+deviceReadyDeferred.state()); 
     console.log('Phonegap and JQM are loaded'); 
     EVERYTHING(); 
    } 

} else { 
    console.log("NOT Running on PhoneGap!"); 
    $.when(jqmReadyDeferred).then(doWhenJqmLoaded); 
    function doWhenJqmLoaded() { 
     console.log('Only jqm is loaded'); 
     EVERYTHING(); 
    } 
} 

function isPhoneGap() { 
    var app = document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1; 
    if (app) { 
     return true; 
    } else { 
     return false; 
    } 
} 
0

Я не вижу вас, включая файл phonegap.js.

Вам понадобится, или «deviceReady» никогда не будет вызван.

Вам нужно добавить:

<script src="phonegap.js"></script> 

Обратите внимание, что вам не нужно на самом деле есть файл в корневом каталоге с именем phonegap.js. «Phonegap Build» добавит его для вас на платформе, для которой он предназначен.

Вот отличный проект стартера:

https://github.com/phonegap/phonegap-start

+0

как вы сказали, файл cordova.js или phonegap.js не требуется с помощью Phonegap. Создайте даже не тот вызов, который я предполагаю. – Louis

+0

Нет, вам нужно добавить звонок. Для примера см. Проект starter projects.html. – Red2678

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