我已经实现了一些功能时,浏览器将被关闭。
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.click
方法。 - 调用
document.write
方法。 - 调用
document.close
方法。 - 调用
window.close
方法。 - 调用
window.navigate
或NavigateAndFind方法。 - 调用
location.replace
方法。 - 调用
location.reload
方法。 - 指定一个新值
location.href
属性。 - 提交一个表单,以经由输入ACTION属性指定的地址
type=submit
控制,或调用form.submit
方法。 - 调用
window.open
方法,提供可能的值_self
为窗口名称。 - 调用
document.open
方法。 - 单击后退,前进,刷新,或主页按钮。
而你不能处理这个问题。
还要注意的是window.onbeforeunload
应该通知他离开页面,处理函数应用户事件return
将被包含在确认弹出的字符串值(除Firefox 4+
看到的bug )。
你不能强迫用户在网页上停留。
注意: 您可以做的唯一的事情onbeforeunload
是通知他离开你的页面的用户 (这是因为某些邪恶的网页可以打开另一个页面等...和垃圾邮件的用户这是安全限制)。
如果你想使AJAX调用卸载窗口之前,你需要使用onunload
事件。 请注意,您的AJAX调用必须有我SYNCHRONUS。 异步调用将无法工作。
在这家伙这个线程说,基于他的做法onbeforeunload
事件在IE工作。
恕我直言,不过,你最好的(和跨平台)机会做你想要的是设置一个Ajax的轮询请求 ( 在这里是一个很好的演示 )检查自上次用户活动多少时间已经过去了,并相应地清除缓存。
我从事这个同样的问题一段时间,所以我会向你解释我发现了什么。
1) window.onbeforeunload
事件是由每个浏览器的方式有点不同处理-我见过的会话如果用户选择留在网页上或不会得到很快就失去了作为事件触发不管。
2)Web应用程序根本不具有防止用户关闭浏览器或导航远离页(原因很明显),而是通过实现服务器端钩子我能只有当调用必要的清理代码电源浏览器被关闭,所以我没有打扰提示用户(这是一种像反正劫持他们的浏览器)
如果您需要关闭该窗口,然后你要提醒他们,当他们在一个新的URL类型以及之前提示用户。 他们是一样的