2013-03-25 12 views
2

我的網頁上,我有window.onpopstate在html中,window.onpopstate在加載和後退箭頭時觸發 - 如何知道?

一個監聽我想捕獲用戶的後退箭頭和經營自己的日常

window.onpopstate火災時,1)在頁面初始加載,2)被重新加載,以及當3)用戶按後退箭頭

可能創建一個狀態空間標誌並檢查它。但更自然的是從事件本身來確定發生了什麼。

有沒有什麼內在的方式來確定事件是否從加載或返回按鈕被觸發?當我檢查這兩個事件時,他們看起來幾乎相同。

回答

1

當用戶在同一文檔的兩個歷史記錄條目之間導航時,即每當活動歷史記錄條目改變時,觸發window.onpopstate事件。

點擊後退按鈕時,頁面加載時和頁面重新加載時(Firefox在頁面加載時不發出此事件)會觸發它。所以,你看到的行爲是有意的。

而且,對於後退按鈕,我想沒有任何方法可以使用此事件檢測後退按鈕單擊。

+0

你對我如何獲取上下文有任何想法:加載,重新加載或退格? – 2013-03-26 08:50:42

0

您可以補償瀏覽器中的popstate錯誤。當有人使用我的編輯器並點擊Backspace按鈕有時觸發導航(這不應該是默認的,但不是每個人都有資格獲得他們的位置),所以我取消它(是的,你可以),然後修復地址欄history.go(1);。我不在這裏發佈與依賴相關的代碼,因爲不同的人會需要這個在不同的上下文中,但它構成了你需要的基礎。

window.onpopstate = function(e) 
{ 
if (id_('editor') && is_node_parent(document.activeElement,id_('editor'))) 
{ 
    e.preventDefault(); 
    history.go(1); 
} 
} 
相關問題