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引用对象的方法
Jan 11 Javascript
jquery中ajax学习笔记3
Oct 16 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
Jan 21 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
分享12个非常实用的JavaScript小技巧
May 11 Javascript
微信小程序版翻牌小游戏
Jan 26 Javascript
图文详解vue框架安装步骤
Feb 12 Javascript
vue+iview/elementUi实现城市多选
Mar 28 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
js实现翻牌小游戏
Jul 31 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
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
图书管理程序(一)
2006/10/09 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
js实现录音上传功能
2019/11/22 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python的subprocess模块总结
2014/11/07 Python
详解爬虫被封的问题
2019/04/23 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
np.dot()函数的用法详解
2020/01/17 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
一套VC试题
2015/01/23 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
小学生作文评语
2014/04/18 职场文书
食品安全汇报材料
2014/08/18 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
医院合作意向书范本
2015/05/08 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
python flask框架快速入门
2021/05/14 Python
Python+Appium实现自动抢微信红包
2021/05/21 Python