3

この方法でページを変更しています

$.mobile.changePage("Preview.html", {
        transition : "slide",
        role : "page",
        changeHash:true                            
    });

これは私のプレビューページがどのように見えるかです

    <div data-role="page"  data-name="preview" class="prew">
        <div data-role="content">
            //content
       </div>
    </div>

画面をタッチすると、前のページに戻らなければなりません。

だから私はこの関数を作成しました

$('.prew').live('tap', function() {
         alert('clicked');
         history.go(-1);//<--this works in simulator not in device.
         //window.history.back() ;//<--this also works in simulator not on device.
         //navigator.app.backHistory();<--this works fine on android not on iOS.
    });

編集:私は問題を引き起こすphotoswipeと呼ばれるプラグインを使用しました。history.go(-1)、history.back()またはdata-rel = "back"は、他のページで正常に機能します。

photoswipeが前のページに戻らないようにしています。

4

3 に答える 3

6

使用できる方法は次のとおりです。ただし、これを機能させるには、ページに一意のIDが必要です。

ここでテストしてください

$('.prew').on('tap', function() {

 // get the ID of the previous page
 var previous = '#' + $.mobile.activePage.prev('div[data-role="page"]')[0].id;

 // move to previous page with reverse effect
 $.mobile.changePage(previous, {
    transition: 'slide',
    reverse: true
 });
});
于 2013-03-26T14:22:37.060 に答える
5

私はお勧めしませんdata-rel="back"。私の経験では、これは問題を引き起こすようです(特に、ユーザーがctrl + f5を使用して手動でリロードを強制する場合)。

履歴を適切に処理した場合は、history.back() 関数を使用することをお勧めします。

$('.prew').live('tap', function() {
    alert('clicked');
    history.back();
});

また、PageタグのクラスよりもIDを使用する方が良いと思います(e.g. id="prew")

于 2013-03-26T11:47:59.860 に答える
3

したがって、JavaScriptアプローチを使用する代わりに、前のページに移動します。ボタン/リンクにdata-rel="back"属性を追加してみませんか。

その後、すべてがjQuery Mobile(JQM)自体によって処理されます。

<a href="#" data-rel="back">Back</a>
于 2013-03-26T07:08:53.317 に答える