关于 window中onbeforeunload的应用

Passion2014 2011-08-29 05:13:15
问题:

用户登录到系统中了,点击页面上的“退出”按钮,可以清除该用户的在线信息;

但是当用户直接点击了 浏览器的关闭按钮后,用window的onbeforeunload事件能捕获这种操作。

期望的效果是弹出确认窗口 选择了“确定”后能执行我的指定代码,当选择了“取消”后,不执行任何代码。

但在测试中出现这样的效果:

直接点击浏览器的关闭按钮后,发现总是先执行指定的代码,而后才是 弹出的确认窗口? 这和期望的效果正好相反。如此就没有弹出确认窗口的必要了。

其实,这种机制 应该像confirm就对了。能告诉调用者 用户选择的是“确定”还是“取消”,之后按照逻辑各自处理。


在网上查了,都是说 只要点击了“确定”就是触发 onbeforeunload事件。可是这看起来矛盾,应该是先有onbeforeunload事件弹出的确认窗口,才能选择“确定”或者“取消”啊!

以下是部分代码:

页面中写上:

window.onbeforeunload = function(){
event = event || window.event;//浏览器兼容
event.returnValue = "确定要退出系统吗?";
}

在哪里知道 用户选择了“确定”?而不是 弹出这个确认窗口,就执行了期望的代码?

请高手赐教! 不胜感激!
...全文
1288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
娃娃命苦 2013-09-12
  • 打赏
  • 举报
回复
楼主,问题什么解决的了?
  • 打赏
  • 举报
回复
window.onload = function(){ window.onbeforeunload = function (e) { e = e || window.event; // 兼容IE8和Firefox 4之前的版本 if (e) { e.returnValue = '确定退出吗?'; } // Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+ return '确定退出吗?'; }; };
  • 打赏
  • 举报
回复
楼主解决了吗啊。。。
  • 打赏
  • 举报
回复
怎么没人啊 我也遇到这个问题啊 我的是要清除用户登录时候的Session啊 怎么没人回答啊。。。。。
winny_2012 2012-12-03
  • 打赏
  • 举报
回复
在google浏览器中怎么调用window.onbeforeunload 方法
Passion2014 2011-08-29
  • 打赏
  • 举报
回复
用 onunload的话,就不能出现 确认的弹出窗口了!
abcd_ufo 2011-08-29
  • 打赏
  • 举报
回复
onunload 这个事件应该是可以的

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧