8

就像標題所說,如果調用pushState函數而不是back函數,我希望能夠執行不同的onstatechange事件。或者,如果go函數是負值或正值。有沒有一種方法可以告訴history.js的狀態如何?

例子:

如果History.pushState()History.go(1)是所謂的,我想statechange事件的回調是forwardPushState

如果History.back()History.go(-1)是所謂的,我想statechange事件的回調是backwardsPushState

+1

保持上次訪問的頁面的跟蹤,如果當前頁面重定向到最近訪問過的頁面,沒準方向是向下。 – adeneo 2013-05-14 16:21:16

+0

如果你通過一個例子來說明會更好。問候 – 2013-05-15 00:25:59

+0

PushState在堆棧中推送新狀態(狀態是在新操作之後存儲的一些數據)。它與後退沒有關係。返回並去是用於在堆棧中的推送狀態上導航的功能。我這樣說是因爲在你的編輯中,你認爲pushState和go(1)是等價的。 – 2013-05-18 23:22:29

回答

6

狀態是與頁面相關的一些數據(如用戶在瀏覽器中看到的那樣)。如果用戶想要進入某個頁面,這個頁面是相同的,或者如果他是來自後退按鈕點擊或者來自向前按鈕點擊,就像我想的那樣。

PushState在棧中推入一個新狀態。它與backgo沒有任何關係。 Backgo是用於在堆棧中的推送狀態上導航的功能。我這樣說是因爲在你的編輯中,你認爲pushState和go(1)是等價的。

也許如果你想知道用戶來自哪個方向,你應該分析onstatechange事件以瞭解它是否需要存儲方向的任何參數。我仍然不知道該怎麼做。

我認爲的主要原因是它與去(-1)go(1)back沒有任何關係。

+0

我知道'pushState'和'go(1)'不是同樣,它只是一個例子。不幸的是,真的沒有任何關係,或鏈接做什麼即時通訊尋找,所以我必須做什麼,如@adeneo說 – Ascherer 2013-05-23 20:56:35

-1

也許這會適合你。

<html> 
<body onunload="disableBackButton()"> 
<h1>You should not come back to this page</h1> 
</body> 
<script> 
function disableBackButton() 
{ 
    window.history.forward(); 
} 
setTimeout("disableBackButton()", 0); 
</script> 
</html> 

上面的代碼會使後面的按鈕很難加載這個頁面。

第二次嘗試

下面的代碼取自另一個堆棧溢出。

detect back button click in browser

window.onload = function() { 
if (typeof history.pushState === "function") { 
    history.pushState("jibberish", null, null); 
    window.onpopstate = function() { 
     history.pushState('newjibberish', null, null); 
     // Handle the back (or forward) buttons here 
     // Will NOT handle refresh, use onbeforeunload for this. 
    }; 
} 
else { 
    var ignoreHashChange = true; 
    window.onhashchange = function() { 
     if (!ignoreHashChange) { 
      ignoreHashChange = true; 
      window.location.hash = Math.random(); 
      // Detect and redirect change here 
      // Works in older FF and IE9 
      // * it does mess with your hash symbol (anchor?) pound sign 
      // delimiter on the end of the URL 
     } 
     else { 
      ignoreHashChange = false; 
     } 
    }; 
} 

}

+0

不試圖禁用後退 – Ascherer 2013-05-21 17:21:12

相關問題