2015-06-30 255 views
0

我不想檢測用戶是否按下後退按鈕我的頁面JavaScript後退按鈕事件

我想檢測用戶是否按下了其他人的頁面上的後退按鈕,並且已回到我的頁面。

我需要重新加載頁面,如果是這樣的話。

+0

不幸的是,我不認爲有這樣的事件,甚至有沒有爲自己的頁面上的返回按鈕,一個單獨的事件。我認爲你必須存儲會話和用戶重定向到的地址,然後在一定的時間範圍內檢查同一用戶是否來自同一個域,但這聽起來很複雜。 – adeneo

+0

這裏的頂部答案http://stackoverflow.com/questions/829046/how-do-i-detect-if-a-user-has-got-to-a-page-using-the-back-button建議使用一個隱藏的表單,因爲這些值被保留 – bbill

+1

嘗試'卸載'事件:https://developer.mozilla.org/en-US/docs/Web/Events/unload。也看到這個類似的問題:http://stackoverflow.com/questions/1341089/using-meta-tags-to-turn-off-caching-in-all-browsers – Pluto

回答

1

你可以玩window.history,也可以在本地爲localstorage或cookie存儲用戶的一些值。 (僅供參考,MDN article

例如,檢查用戶在您的頁面上時的值window.history.length;然後在其他地方導航;然後點擊「返回」返回到您的上一頁。現在再比較window.history.length - 這是不同的(至少對我來說,在Chrome中)。

TL; DR - 這不會是一個萬無一失的方法,但它可能是一個很好的黑客攻擊你。

+0

是的,那很好。我可以比較localStorage.historyLength和window.history.length。適合我! –

+0

除非它們再次向前和向後按壓,否則它不起作用。 –

+0

是的,的確如此。我不知道這可能是多麼的可能...但是考慮到其他可能的答案(通過在OP的評論中發佈的鏈接),似乎沒有一種完全可靠的方法來實現這一點。你可以結合方法。 – arthurakay

0

這是我最終做的。它的工作原理,但讓我知道,如果你有一個更好的解決方案:

window.addEventListener('unload', unload) 
function unload() { 
    localStorage.setItem('reload',1) 
} 

var reload = localStorage.getItem('reload') 
reload = parseInt(reload,10) 
if (reload) { 
    localStorage.setItem('reload',0) // false doesn't work here. 
    window.removeEventListener('unload', unload) 
    window.location.reload() 
}