开发者社区> 问答> 正文

javascript onbeforeunload 事件问题

如题:
在html中加入onbeforeunload事件,关闭或刷新等动作,会触发该事件,
但如果该html被iframe中引用,在ie10中则会触发两次事件,求大神详解原因.

展开
收起
小旋风柴进 2016-03-13 08:44:28 1888 0
1 条回答
写回答
取消 提交回答
  • 楼主这个问题是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>
    2019-07-17 19:01:38
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载