window.onbeforeunload方法在IE下无法正常工作的解决办法


Posted in Javascript onJanuary 23, 2010

事件的起因是由于在工作中有客户反映,常常会有用户在浏览网页的过程中订购了商品,但是由于用户一下子打开的窗口过多,又或者在敲打键盘时,错误地按到了F5键,导致页面刷新或者不正常关闭,而这时在该网页上所做的一切操作的信息都丢失了,如果我们可以提供一个在客户信息未处理完成时的提示那该多好啊,下面的代码可以做到不管用户是点击了关闭,或者是在任务栏关闭、点击后退、刷新、按F5键,都可以检测到用户即将离开的消息。

<script type="text/javascript" language="javascript"> 
function bindunbeforunload() 
{ 
window.onbeforeunload=perforresult; 
} 
function unbindunbeforunload() 
{ 
window.onbeforeunload=null; 
} 
function perforresult() 
{ 
return"当前操作未保存,如果你此时离开,所做操作信息将全部丢失,是否离开?"; 
} 
</script>

只需要将bindunbeforunload()方法注册到要检测的页面上即可,你可以在body的onload或者document.ready中注册这个方法,在这里我们采用的是window.onbeforeunload,即是在页面即将卸载之前弹出提示框,好的,现在来测试一下,测试代码:
<html> 
<head><title>this is id onbeforunload event test</title> 
</head> 
<script type="text/javascript" language="javascript"> 
function bindunbeforunload() 
{ 
window.onbeforeunload=perforresult; 
} 
function unbindunbeforunload() 
{ 
window.onbeforeunload=null; 
} 
function perforresult() 
{ 
return"当前操作未保存,如果你此时离开,所做操作信息将全部丢失,是否离开?"; 
} 
</script> 
<body onload="javascript:return bindunbeforunload();"> 
<h1>test is start</h1> 
<input type="button" value="绑定事件" id="btnBind" onclick="return biindunbeforunload();"/> 
<input type="button" value="删除绑定事件" id="btnUnBind" onclick="unbiindunbeforunload();"/> 
</body> 
</html>

上面的代码就是我此次测试的所有代码了,现在刷新页面,嗯,很好,弹出了我们期望中的对话框。但是当我在IE下打开上述代码时,我的“删除事件绑定按钮”没有发挥作用,这让我很崩溃,国内3分之2的用户都在使用IE,特别是在使用该死的IE6、7,如果我的代码不能在IE6、7下正常的工作,那相当于我的工作是白做了,当然,奖金的那些事情就更不用想了。办法都是人想出来的,好吧,我利用一个全局变量来控制是否弹出对话框,修改后的"javascript"代码如下:
<script type="text/javascript" language="javascript"> 
var goodexit=false; 
function bindunbeforunload() 
{ 
goodexit=false; 
window.onbeforeunload=perforresult; 
} 
function unbindunbeforunload() 
{ 
goodexit=true; 
window.onbeforeunload=null; 
} 
function perforresult() 
{ 
if(!goodexit) 
{ 
return"当前操作未保存,如果你此时离开,所做操作信息将全部丢失,是否离开?"; 
} 
} 
</script>

同时调用删除绑定事件时,将变量goodexit的值更改为:true,表示用户是正常退出,这样自然不会弹出对话框了。
再测试一下,正常了,对,这就是我想要的结果!
本篇文章源于从Brandon Himes处而得,并且还是从google快照,源文链接已找不到,本来想翻译的,但是本人水平实在有限,看得懂而已,如果翻译得不好反而招骂,如果朋友们想看源文,请直接点击这里,这是快照地址,可能一段时间后就不存在了。
Javascript 相关文章推荐
理解Javascript_10_对象模型
Oct 16 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
Jan 04 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
js接收并转化Java中的数组对象的方法
Aug 11 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
vue filters的使用详解
Jun 11 Javascript
javascript实现弹幕墙效果
Nov 28 Javascript
JS定时器如何实现提交成功提示功能
Jun 12 Javascript
JQuery 1.4 中的Ajax问题
Jan 23 #Javascript
用JS写的一个TableView控件代码
Jan 23 #Javascript
JQuery 操作Javascript对象和数组的工具函数小结
Jan 22 #Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 #Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 #Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 #Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 #Javascript
You might like
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
2013/09/22 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
浅析vue数据绑定
2017/01/17 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
vue使用Google地图的实现示例代码
2018/12/19 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
python解析json实例方法
2013/11/19 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
django 将model转换为字典的方法示例
2018/10/16 Python
实例详解Python模块decimal
2019/06/26 Python
Django如何将URL映射到视图
2019/07/29 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python的链表基础知识点
2020/09/13 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
庆八一活动方案
2014/01/25 职场文书
公司管理建议书范文
2014/03/12 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
校园开放日新闻稿
2015/07/17 职场文书
CAD实训总结范文
2015/08/03 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB
2022漫威和DC电影上映作品
2022/04/05 欧美动漫