关于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 相关文章推荐
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
javascript题目,重写函数让其无限相加
Feb 15 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
js判断所有表单项不为空则提交表单的实现方法
Sep 09 Javascript
vue+axios 拦截器实现统一token的案例
Sep 11 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php实现websocket实时消息推送
2018/03/30 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
js星星评分效果
2014/07/24 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
java字符串格式化输出实例讲解
2021/01/06 Python
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
加入学生会演讲稿
2014/04/24 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
商务英语求职信范文
2015/03/19 职场文书
死亡诗社观后感
2015/06/05 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
Nginx利用Logrotate实现日志分割
2022/05/20 Servers