如何从Jquery Mobile历史记录中删除当前页面?

时间:2014-08-28 14:52:07

标签: jquery-mobile browser-history

有没有办法从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页上,它显示了一个后退按钮,但点击它什么也没做。

1 个答案:

答案 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记录历史堆栈的状态