我正在使用此方法更改页面
$.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无法返回上一页。
答案 0 :(得分: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
});
});
答案 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>