0

Jquery モバイルと戻るボタンの機能に問題があります。

表示時にリモートサーバーで ajax リクエストを実行するページがあります。Ajax は、pagebeforeshow イベントを通じて起動されます。複数の HTML ファイルを使用しているため、このイベントは [data-role="page"] 属性を持つ div に添付されます。

 <div data-role="page" data-theme="b" id="Favorites">
   <div data-role="content" data-theme="b">
    <div id="Ajax">
            DISPLAY AJAX RESULT CONTAINING LINK TO OTHER HTML PAGE
        </div>
    </div>
 </div>

これがJavaScriptです:

$('#Favorites').on('pagebeforeshow', function(event) {
   LaunchAjax();   
});     

これは、ページが初めて表示されたときに正常に機能しています。ただし、ajax の結果には、ユーザーがたどることができる別のページへのリンクが含まれています。ユーザーがリンクをたどると、(jquery mobile で生成された) 戻るボタンを表示して、ajax の結果を含む初期ページに戻るようにします。

ただし、戻るボタンをクリックすると、最初のページが表示されますが空白です。ajaxによって生成された最後の結果を表示するか、少なくともajax関数を再起動して初期結果を表示する方法が必要です。

私はJQMキャッシュで遊んでみました:

 $.mobile.page.prototype.options.domCache = true;

しかし、これで問題は解決せず、DOM 要素が正しくキャッシュされていないように見えます (別の html ファイルを使用していることが原因かもしれません)。

phonegap を使用して Chrome デスクトップと Android でアプリをテストしましたが、両方に問題があります。

誰もこれを行う正しい方法を持っていますか?

どうもありがとう

よろしくお願いします。

4

1 に答える 1

1

ページ イベント バインディングの方法が正しくありません。ページ イベントを正常にバインドする唯一の方法は、委任されたバインディングを使用することです。

したがって、このコードの代わりに:

$('#Favorites').on('pagebeforeshow', function(event) {
    LaunchAjax();   
});

これを使って:

$(documents).on('pagebeforeshow', '#Favorites',function(event) {
    LaunchAjax();   
});    
于 2013-05-09T19:58:49.617 に答える