我实现了一些浏览器关闭时的功能。
window.onbeforeunload = function (evt) {
evt = (evt)? evt:event;
clickY = evt.clientY;
altKey = evt.altKey;
keyCode = evt.keyCode;
if (altKey == true && keyCode == 0){
//Make call to the server to clear the cache
}else if(clickY < 0){
//Make a call to the server to clear the cache
}else {
return;
}
};
现在上面代码中的问题是,每当我通过单击地址栏按回车键或使用刷新按钮刷新页面时,我的代码都会给我警报(“21112”),我不想要它,因为调用会触发仅当浏览器关闭时。 那么有人可以帮助我实现这一目标。
最佳答案
window.onbeforeunload
事件是在您的页面是 unload
之前调用编辑。
没有方法可以检查它是刷新事件还是浏览器窗口关闭事件。
它在不同的场景下触发 MSDN :
- 关闭当前窗口。
- 通过输入新地址或选择收藏夹导航到另一个位置。
- 单击指向另一个文档的 anchor 。
- 调用
anchor.click
方法。 - 调用
document.write
方法。 - 调用
document.close
方法。 - 调用
window.close
方法。 - 调用
window.navigate
或 NavigateAndFind 方法。 - 调用
location.replace
方法。 - 调用
location.reload
方法。 - 为
location.href
属性指定一个新值。 - 通过 INPUT
type=submit
控件将表单提交到 ACTION 属性中指定的地址,或调用form.submit
方法。 - 调用
window.open
方法,为窗口名称提供可能的值_self
。 - 调用
document.open
方法。 - 单击“后退”、“前进”、“刷新”或“主页”按钮。
而你无法处理这个。
另请注意,window.onbeforeunload
事件应该通知用户他离开了页面,处理函数应该返回
字符串值,该值将包含在确认弹出窗口中(Firefox 4+
参见 bug )。
你不能强制用户留在页面上。
注意:您可以使用 onbeforeunload
做的唯一事情就是通知用户他将离开您的页面
(这是因为一些恶意页面可以打开其他页面等等...和垃圾邮件用户。这是安全限制)。
如果你想在窗口卸载之前进行 AJAX 调用,你需要使用 onunload
事件。请注意,您的 AJAX 调用必须同步。异步调用将不起作用。
关于javascript - Javascript 在 IE8 中关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598070/