2014-08-28 83 views
1

有沒有辦法從Jquery Mobile的歷史記錄中刪除當前頁面(離開的頁面)?設置changeHash:false似乎從歷史記錄中刪除傳入頁面。如何從Jquery Mobile的歷史記錄中刪除當前頁面?

下面是一個例子:

<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頁

​​

我要的是,當第3頁,點擊後退按鈕到第2頁,並且不可能回到第1頁。

會發生什麼情況是從第1頁到第2頁到第3頁點擊後退按鈕會直接回到第1頁。

另外,如果我在第2頁上放置了data-add-back-btn =「true」,它會顯示一個後退按鈕,但點擊它卻什麼也不做。

+0

不知道爲什麼它不workig,因爲我usualy使用點擊回去,但是嘗試添加(數據網址=「page2.html」)到標題,看看是否有效。或者只是添加(onclick =「$。mobile.changePage('page2.html',{changeHash:true});」)並刪除(data-add-back-btn =「true」) – Tasos 2014-08-28 17:56:25

+0

在這個硬編碼按鈕例如轉到第2頁將轉到第2頁,但它不是解決方案。在真實的應用程序中,1和3之間有任意數量的路徑,它需要使用歷史記錄才能訪問正確的頁面。這也不是真的回來,但從第3頁前進到第2頁。在Android上,人們也可以使用後退按鈕來瀏覽歷史記錄,但這不會改變。 – 2014-08-28 20:24:55

+0

你想從歷史中刪除哪個頁面?第1頁或第2頁? – Omar 2014-09-04 20:47:19

回答

3

假設你正在使用jQuery Mobile的> 1.4,您可以直接訪問,並與$.mobile.navigate.history.stack

修改歷史堆棧如果只想當你從第1頁轉到從歷史記錄中刪除1 - >第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它記錄歷史堆棧的狀態

+0

我得查看一下。此刻轉移到其他一些東西。謝謝你的提示。 – 2014-09-10 17:58:33

+0

你好!這終於爲我工作,但只有在我添加另一行後:<<<<< $ .mobile.navigate.history.activeIndex = $ .mobile.navigate.history.stack.length-1; >>>>>不知道爲什麼,只知道沒有它會記錄這個錯誤:'不能讀取未定義的屬性哈希值' – 2015-11-04 13:55:33

相關問題