2012-04-19 39 views
2

我想在我的web應用程序中禁用F5鍵。我正在使用以下代碼:無法禁用IE8中的F5鍵

<html> 
<head> 
<script type="text/javascript"> 
window.onkeydown=function(e) { 
       if (e.keyCode === 116) { 
         alert("This action is not allowed"); 
         e.keyCode = 0; 
         e.returnValue = false;     
         return false; 
        } 

       } 
</script> 
</head> 
<body> 
<p> F5 Test IE8</p> 
</body> 
</html> 

上述代碼在Chrome中正常工作,但在IE8中無法正常工作。按F5頁面會在IE8上刷新。我曾嘗試使用e.preventDefault(),但沒有任何工作。任何幫助?

+9

爲了什麼目的?他們也可以使用Ctrl/Cmd + R或按下刷新按鈕。 – 2012-04-19 05:24:25

+0

我認爲另一個(可能更好)選項是檢查用戶是否正在從頁面導航(例如:刷新)並要求確認。 – Shoban 2012-04-19 05:29:35

+4

請勿篡改默認的瀏覽器功能。 – 2012-04-19 05:30:44

回答

4

嘗試下一編碼:

<html> 
<head> 
<script type="text/javascript"> 
    document.onkeydown=function(e) { 
    e=e||window.event; 
    if (e.keyCode === 116) { 
     e.keyCode = 0; 
     alert("This action is not allowed"); 
     if(e.preventDefault)e.preventDefault(); 
     else e.returnValue = false; 
     return false; 
    } 
    } 
</script> 
</head> 
<body> 
<p> F5 Test IE8</p> 
</body> 
</html> 
  • 必須使用的,而不是window對象document對象。在IE8中window對象不支持onkeydown
  • 必須使用e=e||window.event;代碼行,因爲在IE8-當事件註冊爲element.on...任何參數接收到事件處理函數(從你的例子eundefined);
+0

謝謝安德魯的幫助。通過您發佈的代碼段,我收到警報消息,但頁面仍在IE8上刷新。按F5鍵時,有什麼辦法可以阻止頁面刷新? – 2012-04-19 06:54:31

+0

@Himanshu Saraswat,對不起,我輸了一行代碼'e.keyCode = 0;'查看更新後的答案。我在IE8和Chrome中檢查過它。 – 2012-04-19 10:44:56

1

測試在IE8,Firefox和Chrome:

document.onkeydown=function(e) { 
    var event = window.event || e; 
    if (event.keyCode == 116) { 
     event.keyCode = 0; 
     alert("This action is not allowed"); 
     return false; 
    } 
} 

另見this example

+0

在我的示例中,您必須首先關注結果幀以測試腳本。我更新了鏈接以防止這種情況發生。要再次查看源代碼,請移除鏈接網址中的/ show /'。 – scessor 2012-04-19 06:55:17

+0

感謝一百萬名受訪者。你的代碼工作。但是我也注意到,如果我正在測試多個擊鍵(F5,Backspace或ctrl + R),那麼在代碼處理到達onbeforeunload事件時,F5必須是第一個要測試的鍵。感謝您的幫助 – 2012-04-19 14:58:53

+0

不客氣。 – scessor 2012-04-19 15:55:03