关于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 相关文章推荐
Jquery 1.42 checkbox 全选和反选代码
Mar 27 Javascript
学习js在线html(富文本,所见即所得)编辑器
Dec 18 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
jquery+ajax实现注册实时验证实例详解
Dec 08 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
微信小程序tabBar用法实例详解
Dec 04 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 Javascript
详解JavaScript中的执行上下文及调用堆栈
Apr 29 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中的curl_multi系列函数使用例子
2014/07/29 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
Python构建图像分类识别器的方法
2019/01/12 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
实习生的自我评价
2014/01/08 职场文书
旷课检讨书2000字
2014/01/14 职场文书
公益广告宣传方案
2014/02/28 职场文书
怎么写好自荐书
2014/03/02 职场文书
质量月口号
2014/06/20 职场文书
经济类毕业生求职信
2014/06/26 职场文书
迎七一演讲稿
2014/09/12 职场文书
教师年终个人总结
2015/02/11 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle