有没有办法从Jquery Mobile历史记录中删除当前页面(正在导航的页面)?设置changeHash:false似乎从历史记录中删除了传入的页面。
以下是一个例子:
第1页
<div data-role="page">
<div data-id="fixedheader" data-role="header" data-position="fixed">
<h1>Page 1</h1>
</div>
<div data-role="content">
<button onclick="$.mobile.changePage('page2.html',{changeHash:false});">Page 2</button>
</div>
</div>
第2页
<div data-role="page">
<div data-id="fixedheader" data-role="header" data-position="fixed">
<h1>Page 2</h1>
</div>
<div data-role="content">
<button onclick="$.mobile.changePage('page3.html',{changeHash:true});">Page 3</button>
</div>
</div>
第3页
<div data-role="page">
<div data-id="fixedheader" data-role="header" data-position="fixed" data-add-back-btn="true">
<h1>Page 3</h1>
</div>
<div data-role="content"></div>
</div>
我想要的是,在第3页上,单击后退按钮会转到第2页,并且无法返回到第1页。
如果从第1页到第3页,第3页点击后退按钮,会直接返回第1页。
另外,如果我把数据加上-btn =&#34; true&#34;在第2页上,它显示了一个后退按钮,但点击它什么也没做。
答案 0 :(得分:3)
假设您正在使用jQuery Mobile&gt; 1.4,您可以使用$.mobile.navigate.history.stack
如果您只想从第1页导航时从历史记录中删除第1页 - &gt;第2页,以下代码应解决您的问题。此函数假定使用jQuery Mobile 1.4.3
$(document).on('pagecontainerchange', function(e, ui) {
if ( ui.prevPage.attr('id') === 'first' && ui.toPage.attr('id') === 'second' ) {
var index = $.mobile.navigate.history.stack.length - 2;
$.mobile.navigate.history.stack.splice(index, 1);
}
});
Here is a fiddle记录历史堆栈的状态