返回上一页在模拟器中工作,而不是在iOS设备jquerymobile上

Naj*_*b K 3 jquery-mobile photoswipe cordova

我正在使用此方法更改页面

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

这就是我的预览页面的样子

    <div data-role="page"  data-name="preview" class="prew">
        <div data-role="content">
            //content
       </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

现在当我触摸屏幕时,我必须回到上一页.

所以我创建了这个功能

$('.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.
    });
Run Code Online (Sandbox Code Playgroud)

编辑:我使用了一个名为photoswipe的插件导致问题.history.go(-1),history.back()或data-rel ="back"在其他页面上正常工作.

photoswipe无法返回上一页.

Oma*_*mar 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
 });
});
Run Code Online (Sandbox Code Playgroud)


Jay*_*ayu 5

我不推荐data-rel="back".根据我的经验,这似乎会导致问题(特别是当用户使用ctrl + f5手动强制重新加载时).

如果您已正确处理历史记录,那么我建议您使用history.back() 功能.

$('.prew').live('tap', function() {
    alert('clicked');
    history.back();
});
Run Code Online (Sandbox Code Playgroud)

另外我认为在页面标记中使用ID比使用类更好(e.g. id="prew").