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


Posted in Javascript onOctober 14, 2010

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

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

现在在页面加入这么一段脚本:
<script type="text/javascript"> window.onload=function(){
//在各个层级的元素上绑定事件 

window.onclick=func; 

document.onclick=func; 

document.getElementById("timeDiv").onclick=func; 

document.body.onclick=func; 
} 
function func(){
//响应函数,输出响应的元素 

document.getElementById("timeDiv").innerHTML+=this+"<br>"; 
}

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

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

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

IE 8下结果

可以看到,两者结果并不相同?究竟为什么会这样呢?
原来是由于IE浏览器以及Firefox对于冒泡型事件的支持层次不同造成的。(如对冒泡事件不是很了解可先查询相关资料)
(1)在IE 6以及后续版本,冒泡事件支持的层级达到document对象。
(2)在firefox(准确的说应该是Mozilla1.0以及更高版本),对冒泡事件的支持一直上升到window窗口对象。
于是就造成了上面事件响应结果的不同。

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

document.body.onclick=func;

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

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

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

Javascript 相关文章推荐
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
Nov 12 Javascript
Vue侦测相关api的实现方法
May 22 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
js限制文本框为整数和货币的函数代码
Oct 13 #Javascript
javascript中&quot;/&quot;运算符常见错误
Oct 13 #Javascript
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 #Javascript
理解Javascript_05_原型继承原理
Oct 13 #Javascript
JavaScript 打地鼠游戏代码说明
Oct 12 #Javascript
理解Javascript_03_javascript全局观
Oct 11 #Javascript
理解Javascript_02_理解undefined和null
Oct 11 #Javascript
You might like
SONY SRF-40W电路分析
2021/03/02 无线电
easyui的tabs update正确用法分享
2014/03/21 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
js玩一玩WSH吧
2007/02/23 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
JavaScript使用localStorage存储数据
2019/09/25 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python打包可执行文件的方法详解
2016/09/19 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
基于django传递数据到后端的例子
2019/08/16 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
如何在python中执行另一个py文件
2020/04/30 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
建筑人员岗位职责
2013/12/25 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
师德师风学习材料
2014/12/19 职场文书
项目投资意向书范本
2015/05/09 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
ubuntu下常用apt命令介绍
2022/06/05 Servers