问题: 用户登录到系统中了,点击页面上的“退出”按钮,可以清除该用户的在线信息;但是当用户直接点击了 浏览器的关闭按钮后,用window的onbeforeunload事件能捕获这种操作。期望的效果是弹出确认窗口 选择了“确定”后能执行我的指定代码,当选择了“取消”后,不执行任何代码。但在测试中出现这样的效果:直接点击浏览器的关闭按钮后,发现总是先执行指定的代码,而后才是 弹出的确认窗口? 这和期望的效果正好相反。如此就没有弹出确认窗口的必要了。其实,这种机制 应该像confirm就对了。能告诉调用者 用户选择的是“确定”还是“取消”,之后按照逻辑各自处理。
在网上查了,都是说 只要点击了“确定”就是触发 onbeforeunload事件。可是这看起来矛盾,应该是先有onbeforeunload事件弹出的确认窗口,才能选择“确定”或者“取消”啊!以下是部分代码:页面中写上:window.onbeforeunload = function(){
event = event || window.event;//浏览器兼容
event.returnValue = "确定要退出系统吗?";
}在哪里知道 用户选择了“确定”?而不是 弹出这个确认窗口,就执行了期望的代码?请高手赐教! 不胜感激!
在网上查了,都是说 只要点击了“确定”就是触发 onbeforeunload事件。可是这看起来矛盾,应该是先有onbeforeunload事件弹出的确认窗口,才能选择“确定”或者“取消”啊!以下是部分代码:页面中写上:window.onbeforeunload = function(){
event = event || window.event;//浏览器兼容
event.returnValue = "确定要退出系统吗?";
}在哪里知道 用户选择了“确定”?而不是 弹出这个确认窗口,就执行了期望的代码?请高手赐教! 不胜感激!
window.onbeforeunload = function (e) {
e = e || window.event;
// 兼容IE8和Firefox 4之前的版本
if (e) {
e.returnValue = '确定退出吗?';
}
// Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
return '确定退出吗?';
};
};