2011-03-21 39 views
6

我毫無疑問,這些都是可能記錄在互聯網上的某個地方和索引由谷歌 - 而是通過鏈接的討論頁面和頁面涉水約禁用我認爲我會問,看是否有人可以給功能後關於僅檢測其使用情況的有用答案。如何檢測返回按鈕和新窗口?

關於禁用後退按鈕的其中一個better articles中描述的方法只能通過創建頁面轉換進行工作 - 因此檢測的用處不大。

window.history.next存在可能提供一種用於檢測後退按鈕的機制 - 但如何廣泛的支持呢?它需要不尋常的特權嗎?

Jonathan's answer對這篇文章看起來很有前途 - 但是我想可以在第一次登陸時設置窗口名稱 - 我想我可以使用缺少cookie來檢測第一次打擊。任何其他想法?

TIA

+2

喬納森的回答我看好,但bobince接受的答案是正確的:你不能。唯一合理的方法是構建應用程序服務器端,以便即使用戶返回時也能正常工作。這並不難,並防止其他「意外」的用戶操作,如重新加載,提交表單兩次,打開其他窗口等 – RoToRa 2011-03-21 14:12:53

+0

我一直在玩弄和可檢測的MSIE和Firefox中使用history.length新窗口大多數情況下, 。即喬納森的答案對大多數新窗口都有效(請參閱我的評論)。但關於後退按鈕:history.next在Firefox中受到保護。不幸的是修復當前的代碼庫不是一種選擇。 – symcbean 2011-03-21 16:14:39

回答

0

我寫了一些代碼,而回。這個腳本從來沒有被完全測試過,但你應該能夠抽出一些技術來獲得相同的效果,以便從中檢測後退按鈕。

http://pastebin.no/32fx

+0

感謝克里斯蒂安 - 我碰到這個職位(http://stackoverflow.com/questions/136937/is-there-a-way-to-catch-the-back-button-event-in-來到javascript/2348076#2348076)自問我採用類似方法的問題。這肯定看起來像解決如果你最終使用我的腳本問題 – symcbean 2011-03-24 23:16:20

+0

的正確的方法,我想看看你用它做什麼:) – 2011-03-25 02:10:59

0

使用sessionStorage/localStorage。

if (!sessionStorage.hasBeenHereBefore) sessionStorage.hasBeenHereBefore = true; 
else { 
    // Code to run if they've been here before. 
} 

如果你使用的sessionStorage,那麼如果他們關閉瀏覽器,然後回來,它會看起來像第一次,但如果你使用的localStorage然後它會永遠留。

你可以嘗試尋找一些祕密的事件,如:

window.addEventListener('historyback', function() {}, false); 
window.addEventListener('navigateback', function() {}, false); 
window.addEventListener('returntopage', function() {}, false); 
+0

我認爲這是針對另一個問題的答案 - 不是我問的問題。我試圖緩解的問題是服務器端會話的狀態與用戶選擇的當前位置不匹配的狀態。 – symcbean 2011-03-21 17:46:34

+0

我知道,但真的如你會得到現在這是接近。你可以嘗試一堆窗口事件。 (在回答樣本) – Kayla 2011-03-22 16:45:37