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

2024-02-27

我正在创建一个 MVC 应用程序。关闭应用程序(即窗口/选项卡)时,有必要将会话中的变量设置为 null,但刷新应用程序时则不需要。 我通过以下代码进行了尝试。

<script type="text/javascript">
           window.onbeforeunload = function (e) {
               e = e || window.event;
               if (window.event.keyCode == 116) {
                   alert("f5 pressed");
               }
               else {
                   alert("Window closed");
                   //call my c# code to make my variable null, eg:Session["myVariable"] = null;
               }  
           };
</script>

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

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

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

谁能告诉我哪里错了?


如果你想让它在跨浏览器上工作,你必须监听不同的事件+你必须在每次按下键时监听按键事件,而不是在加载时监听:

document.onkeydown = fkey;
document.onkeypress = fkey
document.onkeyup = fkey;

var wasPressed = false;

function fkey(e){
        e = e || window.event;
       if( wasPressed ) return; 

        if (e.keyCode == 116) {
             alert("f5 pressed");
            wasPressed = true;
        }else {
            alert("Window closed");
        }
 }

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用window.onbeforeunload事件中的window.event.keyCode在javascript中捕获f5按键事件始终为0而不是116 的相关文章

随机推荐