0

我在 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>
4

2 回答 2

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;
    }
}
于 2014-07-18T08:48:51.353 回答
0

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

您将需要它,否则永远不会调用“deviceReady”。

您需要添加:

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

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

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

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

于 2013-11-08T05:29:40.970 回答