0

Phonegap Build で phonegap 2.9.0 を使用し、Android デバイスでテストしています。

Phonegap および Jquery Mobile イベントを登録する方法がわからないので、boarddo.js ファイルの先頭に次のコードを追加しました ( 「PhoneGap + jQuery Mobile」アプリケーションでの正しいイベント登録はこちらにあります)。 、すべてがスプラッシュページでロックされています:

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 に答える