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

时间:2013-03-26 05:41:44

标签: cordova jquery-mobile photoswipe

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

$.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无法返回上一页。

3 个答案:

答案 0 :(得分:6)

这是您可以使用的方法。但是,页面应该具有唯一的ID才能使其正常工作。

Test it here

$('.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
 });
});

答案 1 :(得分:5)

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

如果您已正确处理history,我建议您使用history.back() function

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

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

答案 2 :(得分:3)

所以不要使用javascript方法转到上一页。为什么不将data-rel =“back”属性添加到按钮/链接。

然后jQuery Mobile(JQM)本身将处理所有事情。

<a href="#" data-rel="back">Back</a>