1

JQM 1.3.0 と Phonegap を使用するモバイル アプリがあります。アプリは Web サービスを呼び出し、すべてのページのコンテンツに AJAX を設定します。ブラウザで開発し、スクリプトを直接呼び出すと、すべて正常に動作します。

applicationScripts()

function applicationScripts(){

    $(document).on("pageinit", "#page1, #page2,  #page3, #page4,  #page5", function() {

        $.ajax({
            //make call and populate content.
        })
    });
}

ただし、deviceready リスナー内から関数を呼び出すと、#page1 はデータを取得しません。2〜5ページはうまくいきます。(イベントリスナーを関数内に入れ子にすることも試みまし<body onload="onLoad()">たが、同様の結果が得られました。)

document.addEventListener('deviceready', applicationScripts, false);

function applicationScripts(){

    $(document).on("pageinit", "#page1, #page2,  #page3, #page4,  #page5", function() {

        $.ajax({
            //#page1 not getting content. 
        })
    });
}

これが私の文書の頭です。私のスクリプトはすべて application.js ファイルにあります。

<script type="text/javascript" src="js/cordova.ios.js"></script>    
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery.mobile-1.3.0.min.js"></script>
<script src="js/application.js" ></script>

一部のファイル/イベントが他のファイル/イベントの前にロードされるタイミングの問題かどうかはわかりませんが、スクリプトの順序と「deviceready」を呼び出すさまざまな方法の考えられるすべての組み合わせを試したようです。どんな助けでも大歓迎です!

4

2 に答える 2

0

私はいくつかのPhoneGapプロジェクトを行ってきましたが、deviceready関数内でページイベントをバインドしたことはありません.

js ファイルでページ イベントをバインドするだけです。それはうまく動作します。結局、本番環境で 3 つの PhoneGap プロジェクトを実行していますが、この理由で問題が報告されたプロジェクトはありませんでした。

プロジェクトで関数を使用devicereadyして戻るボタンを無効にし、ページなどを初期化しないようにしました。

それがあなたを助けることを願っています。

于 2013-04-03T04:13:38.830 に答える
0

以下のコードを試すことができます。

var deviceReadyDeferred = $.Deferred();
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() {
  $(document).on("pageinit", "#page1, #page2,  #page3, #page4,  #page5", function() {
    $.ajax({
          //Do something here
    })
});
}
于 2013-04-04T00:21:59.517 に答える