使用window.onbeforeunload事件中的window.event.keyCode在javascript中捕获f5 keypress事件始终为0而不是116

前端之家收集整理的这篇文章主要介绍了使用window.onbeforeunload事件中的window.event.keyCode在javascript中捕获f5 keypress事件始终为0而不是116前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个MVC应用程序.在关闭应用程序(即窗口/选项卡)时,将会话中的变量设置为null,但在刷新应用程序时却没有.
我通过以下代码尝试了它.
  1. <script type="text/javascript">
  2. window.onbeforeunload = function (e) {
  3. e = e || window.event;
  4. if (window.event.keyCode == 116) {
  5. alert("f5 pressed");
  6. }
  7. else {
  8. alert("Window closed");
  9. //call my c# code to make my variable null,eg:Session["myVariable"] = null;
  10. }
  11. };
  12. </script>

但是当按下F5时,“window.event.keyCode”始终为0而不是116.
因为我的变量即使按F5按键也变为空,这不是我的要求.

即使当应用程序(即网页)关闭时,即使它是0(这可能是正确的).

请注意,代码的上述部分位于.cshtml文件中.

任何人都可以告诉我哪里错了吗?

你必须听取不同的事件,如果你想让它工作crossborwser你必须每次按下按键事件,而不是负载
  1. document.onkeydown = fkey;
  2. document.onkeypress = fkey
  3. document.onkeyup = fkey;
  4.  
  5. var wasPressed = false;
  6.  
  7. function fkey(e){
  8. e = e || window.event;
  9. if( wasPressed ) return;
  10.  
  11. if (e.keyCode == 116) {
  12. alert("f5 pressed");
  13. wasPressed = true;
  14. }else {
  15. alert("Window closed");
  16. }
  17. }

这是一个演示:http://jsfiddle.net/FSrgV/1/embedded/result/

但如果您只是想知道用户是否退出页面,您只需使用window.onbeforeunload:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

猜你在找的Windows相关文章