关于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定义类和对象的方法
Nov 26 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
Apr 19 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
vue中watch的用法汇总
Dec 28 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP学习之数组的定义和填充
2011/04/17 PHP
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
JS面向对象编程 for Cookie
2010/09/19 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
js脚本实现数据去重
2014/11/27 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
极简的Python入门指引
2015/04/01 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
消防器材管理制度
2014/01/28 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
好学生评语大全
2014/05/05 职场文书
任命书格式范文
2015/09/22 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js