关于IE浏览器以及Firefox下冒泡事件的响应层级

假设在我们页面有这么一段标签:

 
  
< body >
  < div id ="testDiv" style ="width:200px;height:200px;background:#c0c0c0;" ></ div >
</ body >

现在在页面加入这么一段脚本:

<script type="text/javascript">

window.οnlοad=function(){  //在各个层级的元素上绑定事件
  window.οnclick=func;
  document.οnclick=func;
  document.getElementById("timeDiv").οnclick=func;
  document.body.οnclick=func;
}
function func(){  //响应函数,输出响应的元素
  document.getElementById("timeDiv").innerHTML+=this+"<br>";
}
</script>

在firefox以及IE 8下打开页面,在标签testDiv(灰色方块)上单击,结果分别如下截图:

  

      firefox下结果                IE 8下结果

可以看到,两者结果并不相同?究竟为什么会这样呢?

 

原来是由于IE浏览器以及Firefox对于冒泡型事件的支持层次不同造成的。(如对冒泡事件不是很了解可先查询相关资料)

(1)在IE 6以及后续版本,冒泡事件支持的层级达到document对象。

(2)在firefox(准确的说应该是Mozilla1.0以及更高版本),对冒泡事件的支持一直上升到window窗口对象。

于是就造成了上面事件响应结果的不同。

 

另外,有个有意思的地方不知道你注意到了没有?就是事件目标的响应顺序。(冒泡事件的响应顺序。。。好像有点废话)我们知道,firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件。在这里明显事件处理函数作用在了冒泡阶段。也就是说,如果我们采用传统的直接给事件处理函数属性赋值的话,比方说:

document.body.οnclick=func;

事件处理函数将被添加到事件的冒泡阶段。

 

以上就是对于IE、firefox里面冒泡事件响应层级的一点介绍,同时顺带介绍了采用传统事件处理函数直接赋值的默认处理。详细的讲解可参见大牛Nicholas C. Zakas所著的《javascript高级程序设计》。

 

PS:以上内容仅仅为个人读书笔记,如有错漏,随时欢迎指正。同时希望能有更多的前端爱好者们共同分享你们的心得!

转载于:https://www.cnblogs.com/chyingp/archive/2010/10/11/1848160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值