关于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 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
Bootstrap每天必学之折叠(Collapse)插件
Apr 25 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
React中ES5与ES6写法的区别总结
Apr 21 Javascript
Vue自定义指令使用方法详解
Aug 21 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
Oct 18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 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
php getsiteurl()函数
2009/09/05 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Django框架的中的setting.py文件说明详解
2018/10/15 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
浪费资源的建议书
2014/03/12 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
小学生环保标语
2014/06/13 职场文书
超市创业计划书
2014/09/15 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2014年化验室工作总结
2014/11/21 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
MySQL中的隐藏列的具体查看
2021/09/04 MySQL