如题:
在html中加入onbeforeunload事件,关闭或刷新等动作,会触发该事件,
但如果该html被iframe中引用,在ie10中则会触发两次事件,求大神详解原因.
楼主这个问题是BOM中一个关于frame与window对象的问题。
1.一般的HTML页面只有一个window对象,而带有frame的HTML页面不是这样,有多个window对象,包括一个总window对象,而其他frame对象也是window对象,并放在frames数组中;
2.onbeforeunload是window的一个方法,如果此时HTML页面中有一个frame,就会有2个window对象,点关闭或刷新触发方法后,方法会执行2次。
3.如何杜绝这种现象呢?在onload方法中将this(window对象)作为参数传递到触发事件中去
4.上代码说明区别。
main.html
<html>
<head>
<title>onunload测试</title>
<script>
function checkLeave(obj){
if(typeof obj =='object')
{
alert("欢迎下次再来主界面!");
}
}
</script>
</head>
<body onunload="checkLeave(this)">
主页面
<iframe src="frame.html"/>
</body>
</html>
frame.html
<html>
<head>
<title>onunload测试</title>
<script>
function checkLeave(obj){
if(typeof obj =='object')
{
alert("欢迎下次再来frame界面!");
}
}
</script>
</head>
<body onunload="checkLeave(this)">
frame页面
</body>
</html>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。