• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
山高我为峰
博客园    首页    新随笔    联系   管理    订阅  订阅
window/body/img/iframe 的onload事件

  在html页面中,只有body,img,iframe这一类标签具有onload事件。

    onload事件表示在当前元素载入完成后发生的事件。其中,window也有onload事件,但是跟body的是同一事件,如果页面上对两者都定义了该事件,只会响应一个。

    iframe上的事件在ie6下有一些bug:

    1.iframe的onload事件跟window.onload事件只能二者取其一,似乎ie把它看作同一个事件了!例如:

window.onload=function(){

    alert("window loaded");

}

var oIframe = document.getElementById("iframe");

oIframe .onload=function(){

    alert("iframe loaded");

}

    这段代码只能响应iframe的事件,如果window.onload事件定义在后则只响应window的onload事件!

    但是如果在iframe标签中定义响应方法则不会发生这种情况:

<iframe src=child.html" onload="alert('iframe loaded')"></iframe>

  这样的代码则能正确执行,window和iframe的onload事件均能正常响应。

  用addEventListener的方式绑定的iframe事件也可以正常运行

     如果是在js中定义的iframe的onload事件,则只有在iframe第一次加载时响应,以后更改iframe的src加载别的页面时都不会再响应了。

  这似乎证明了在js中定义iframe的onload事件实际上定义的是window的onload事件,这样才能解释为何window的事件被覆盖了,

并且只响应一次,因为window确实只加载一次。在Firefox和Chrome中则没有这个问题。

posted on 2016-06-29 17:25  山高我为峰  阅读(1382)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3