我正在创建一个 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(使用前将#替换为@)