Phonegap和Jquery移动注册,phonegap 2.9.0

时间:2013-11-07 09:16:20

标签: jquery-mobile cordova phonegap-build

我在Phonegap Build中使用phonegap 2.9.0,并在我的Android设备上进行测试。

我不知道如何注册Phonegap和Jquery Mobile事件,所以我在boarddo.js文件的顶部添加了以下代码(此处为Correct event registration in the 'PhoneGap + jQuery Mobile' application)...没有任何反应,一切都被锁定在启动页面:

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>

2 个答案:

答案 0 :(得分:0)

我没有看到你包括phonegap.js文件。

您将需要它或永远不会调用“deviceReady”。

您需要添加:

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

注意,您不需要在名为phonegap.js的根中实际拥有一个文件。 “Phonegap Build”将根据它正在构建的平台为您添加它。

这是一个很棒的入门项目:

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

答案 1 :(得分:0)

对我来说,Jquery Mobile和Phonegap的最佳初始化/注册例程如下,它允许在Phonegap中运行您的应用程序,以及在标准浏览器上运行纯Web应用程序:

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;
    }
}