2012-03-15 53 views
2

我有邏輯應用程序運行,我需要存儲var algorithmToApply=1 or etc;JavaScript - 如何告訴瀏覽器Chrome,Firefox,Safari,允許我禁用刷新按鈕?

其中我的每個值都分配了相關算法。主要的問題是測試用戶點擊瀏覽器刷新按鈕和我的所有應用程序邏輯崩潰。

algorithmToApply = 1 ; // Thinking 
algorithmToApply = 2 ; // Waiting 
algorithmToApply = 11 ; // Downloading 
algorithmToApply = 100 ; // Booting 
algorithmToApply = 900 ; // Kernel prepare 
algorithmToApply = 0 ; // User refresh button is a BUG 

我如何使用JavaScript的瀏覽器的請求(歌劇或Chrome火狐可選/ Safari瀏覽器),讓我來限制用戶不能點擊刷新(但他們可以隨時關閉或關閉瀏覽器實例)。

這可能嗎?如果是這樣如何?

追問:(最好我們能做到)

/* @WARNING: Do not refresh */ 
$(window).bind('beforeunload', function(e) { 
    if (mystatus>=2) { 
    return "WARNING: Your status is .... If you refresh now, software will lose all the status."; 
    } else { 
    return "WARNING: Your status is not ... You can refresh."; 
    }  
}); 
+2

你以爲走錯了路。不是「我怎樣才能禁用刷新按鈕」,而是「我如何在頁面刷新之間保存我的信息?」 - 您是否考慮過使用localStorage/sessionStorage來跟蹤狀態,以便如果用戶刷新頁面,它會檢測到它停止的位置? – vcsjones 2012-03-15 20:09:09

+0

不,你不應該依靠禁用瀏覽器的刷新按鈕。如果你依賴於此,那麼你應該重新考慮你的應用邏輯以及它的結構。 – evasilchenko 2012-03-15 20:13:22

回答

4

那是不可能的。

你可以,但是,加beforeunload監聽器,會提示進行確認:

var algorithmToApply = 0; 
window.onbeforeunload = function() { 
    if (algorithmToApply !== 0) { /* Anything ..*/ 
     return 'A task is pending. Do you really want to leave?'; 
    } 
}; 
+0

這在Opera中有效嗎? – nnnnnn 2012-03-15 20:11:25

+0

@nnnnnn不幸的是,沒有。但是,大多數瀏覽器都支持這一點,並且這是防止導航的唯一方法。 – 2012-03-15 20:16:12

+0

+1 - 謝謝!上面編輯的作品很棒你的邏輯。 – YumYumYum 2012-03-15 20:27:57

相關問題