JavaScript事件捕获与事件冒泡原理 IE和DOM之间存在哪些主要差别

事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。

(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。

  IE 5.5: div -> body -> document

  IE 6.0: div -> body -> html -> document

  Mozilla 1.0: div -> body -> html -> document -> window

(2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)。

(3)DOM事件流:同时支持两种事件模型:捕获型事件和冒泡型事件,但是,捕获型事件先发生。两种事件流会触及DOM中的所有对象,从document对象开始,也在document对象结束。

  DOM事件模型最独特的性质是,文本节点也触发事件(在IE中不会)。

 

支持W3C标准的浏览器在添加事件时用addEventListener(event,fn,useCapture)方法,基中第3个参数useCapture是一个Boolean值,用来设置事件是在事件捕获时执行,还是事件冒泡时执行。而不兼容W3C的浏览器(IE)用attachEvent()方法,此方法没有相关设置,不过IE的事件模型默认是在事件冒泡时执行的,也就是在useCapture等于false的时候执行,所以把在处理事件时把useCapture设置为false是比较安全,也实现兼容浏览器的效果。

 

事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target)。
事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签。
假设一个元素div,它有一个下级元素p。
<div>
<p>元素</p>
</div>
这两个元素都绑定了click事件,如果用户点击了p,它在div和p上都触发了click事件,那这两个事件处理程序哪个先执行呢?事件顺序是什么?

两种模型

以前,Netscape和Microsoft是不同的实现方式。

Netscape中,div先触发,这就叫做事件捕获。

Microsoft中,p先触发,这就叫做事件冒泡。

两种事件处理顺序刚好相反。IE只支持事件冒泡,Mozilla, Opera 7 和 Konqueror两种都支持,旧版本的Opera’s 和 iCab两种都不支持 。

 

事件捕获

当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发。

 

事件冒泡

当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发。


W3C模型

W3C模型是将两者进行中和,在W3C模型中,任何事件发生时,先从顶层开始进行事件捕获,直到事件触发到达了事件源元素。然后,再从事件源往上进行事件冒泡,直到到达document。

程序员可以自己选择绑定事件时采用事件捕获还是事件冒泡,方法就是绑定事件时通过addEventListener函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。

ele.addEventListener('click',doSomething2,true)

true=捕获

false=冒泡

 

传统绑定事件方式

在一个支持W3C DOM的浏览器中,像这样一般的绑定事件方式,是采用的事件冒泡方式。

ele.onclick = doSomething2

 

IE浏览器

如上面所说,IE只支持事件冒泡,不支持事件捕获,它也不支持addEventListener函数,不会用第三个参数来表示是冒泡还是捕获,它提供了另一个函数attachEvent。

ele.attachEvent("onclick", doSomething2);

 

 

转载于:https://www.cnblogs.com/dtdxrk/archive/2012/06/28/2567132.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复制带随机节点的链表

题目&#xff1a; 给定一个链表&#xff0c;每个节点包含一个额外增加的随机指针&#xff0c;该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深拷贝。 解题思路&#xff1a; 这道题的一个难点就是链表中的随机指针&#xff0c;我能想到的就是在这个链表的每个节…

北斗三号系统第九、十颗组网卫星三大看点

来源&#xff1a;新华网29日&#xff0c;北斗三号第九颗、第十颗卫星在西昌卫星发射中心腾空而起&#xff0c;此次发射的两颗卫星是北斗导航全球组网从最简系统迈向基本系统的首组卫星。北斗的建设&#xff0c;像一场马拉松比赛&#xff0c;既考验耐力又比拼速度。作为“北斗大…

写代码这条路,能走多远?

职场危机感似乎是每个人在职业生涯都会遇到的话题&#xff0c;我对这种危机处境和自己曾遇到的问题进行了一番思考&#xff0c; 参考了其他人的一些结论并结合自身的经历&#xff0c;设计了应对的初步方案。 通过这篇文章&#xff0c;希望能给大家一些启发&#xff0c;也欢迎大…

AMD VS 英特尔:芯片制造实力似乎正在发生逆转!

来源&#xff1a;网易智能参与: 天门山据国外媒体MarketWatch报道&#xff0c;芯片制造业似乎正在发生重大变化&#xff0c;AMD好像成为和对手英特尔竞争的赢家。在这两家芯片制造商本周公布季度财报之后&#xff0c;分析师表示&#xff0c;英特尔陷入产品延迟和管理上的不确定…

把数组排列成最小的数(详解)

题目&#xff1a; 输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。例如输入数组{3&#xff0c;32&#xff0c;321}&#xff0c;则打印出这三个数字能排成的最小数字为321323。 题目解析&#xff1a; 看到…

人工智能预测AI系统的“心灵”与“行为”

来源&#xff1a;中国科学网任何同Siri或Alexa有过令人沮丧的互动体验的人都知道&#xff0c;数字助理无法同人类媲美。而它们需要的是被心理学家称为“心智理论”的东西—— 一种意识到其他人的信念和欲望的能力。如今&#xff0c;计算机科学家创建了能窥探其他计算机“心灵”…

Firebug控制台详解[转]

Firebug是网页开发的利器&#xff0c;能够极大地提升工作效率。 但是&#xff0c;它不太容易上手。我曾经翻译过一篇《Firebug入门指南》&#xff0c;介绍了一些基本用法。今天&#xff0c;继续介绍它的高级用法。 Firebug控制台详解 作者&#xff1a;阮一峰 控制台&#xff0…

跳石板(详解)

题目链接&#xff1a; https://www.nowcoder.com/practice/4284c8f466814870bae7799a07d49ec8?tpId85&&tqId29852&rp1&ru 题目分析&#xff1a; 这道题就是计算从N开始加&#xff0c;最少加几次等于M&#xff0c;前提条件是每次相加的数必须是当前数的约数 思…

智能机器人与系统高精尖创新中心2018年度开放基金项目申报通知

来源&#xff1a;机器人大讲堂摘要&#xff1a;为推动中心的基础研究和关键技术的自主创新&#xff0c;聚集和培养优秀青年科技人才&#xff0c;使中心成为国内智能机器人与系统领域高水平科学和技术研究的重要基地&#xff0c;特设立开放基金。智能机器人与系统高精尖创新中心…

分享一个基于jQuery,backbone.js和underscore.js的消息提示框架 - Backbone.Notifier

在线演示 本地下载 我们曾今在以前的文章中介绍过jQuery的警告和提示框插件&#xff0c;今天这里我们介绍一个开源的消息提示框架 Backbone.Notifier&#xff0c;目前版本为version0.1。使用这个框架可以帮助你构建非常灵活强大的浏览器端消息提示功能。这个框架依赖于&#…

杨辉三角变形(高效解析)

题目链接&#xff1a; https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43?tpId37&&tqId21276&rp1&ru 题目解析&#xff1a; 拿到这道题大多数人的第一反应都是先将杨辉三角用一个二维数组表示出来&#xff0c;然后直接在第n行找就可以了&a…

生物科技发展与人类命运共同体塑造

来源&#xff1a;学习时报摘要&#xff1a;生物科技的发展是人类文明发展的缩影。当前&#xff0c;生物科技的新一轮变革&#xff0c;正广泛渗透到人类经济、社会、文化、军事、政治等领域&#xff0c;其对人类伦理、法律、环境、安全、国际关系等领域的影响越来越大。生物科技…

和为S的连续正数序列(双指针详解)

题目解析&#xff1a; 题目是小明算数&#xff0c;这里不赘述&#xff01;->题目链接<-   看到这道题目的可以马上想到等差数列&#xff0c;这个题目可以换一种说法就是求有多少个等差数列的和为sum&#xff0c;可以直接用公式计算&#xff0c;但是公式计算个人感觉有一…

七大科技巨头的最新人工智能布局

来源&#xff1a;资本实验室摘要&#xff1a;近几年&#xff0c;全球人工智能技术的发展与应用突飞猛进。近几年&#xff0c;全球人工智能技术的发展与应用突飞猛进。例如&#xff0c;各大公司的自主驾驶汽车测试如火如荼&#xff0c;许多人每天都在家里使用像Alexa这样的人工智…

有史以来最精彩的自问自答:OpenAI 转方块的机械手

机械手任务之三 - 转鸡蛋&#xff0c;示意图来源&#xff1a;AI 科技评论摘要&#xff1a;今年 2 月&#xff0c;OpenAI 发起了一组机械手挑战&#xff0c;他们在基于 MuJoCo 物理模拟器的 Gym 环境中新设计了含有机械臂末端控制、机械手拿取物体的两组八个有难度的、早期强化学…

寻找两个有序数组的中位数(虚拟数组图文详解)

思路一&#xff08;暴力&#xff09;&#xff1a; 当看到这个题目的时候可能会觉的是不是系统高估了这个题目&#xff0c;这个这么简单&#xff0c;只需要将两个数组合并&#xff0c;排序然后合并就好了。这样做确实可以求出中位数&#xff0c;但是并不能说是完成题目的要求&am…

uva540

题目的意思大概就是现在让你做一个数据结构&#xff0c;具体的应该是一个队列&#xff0c;有一堆元素&#xff0c;这堆元素拥有两个特性&#xff0c;一是它的值&#xff0c;二是它所在的team值。这个队列满足以下的一些性质&#xff08;操作&#xff09;。 ENQUEUE(k) &#xf…

【决策】Waymo无人出租车年底发射,现已进入定价环节 | 公交部门竟成友军?...

开车栗 发自 凹非寺量子位 出品 | 公众号 QbitAI按照Waymo的计划&#xff0c;今年年底之前&#xff0c;他们的无人出租车服务就要进入市场了。现在&#xff0c;无人的士已进入了定价环节&#xff0c;紧张刺激。Waymo希望从此开始&#xff0c;人类能一点一点抛弃私家车&#xff…

盘点那些具有“爆款”潜力的智能家居产品

来源&#xff1a;OFweek 摘要&#xff1a;智能家居已经火了有一段时间&#xff0c;然而目前真正普及的家庭并不多。从长远来看&#xff0c;智能家居是一种更环保、智能、舒适、安全的人居环境&#xff0c;它涉及物联网、人工智能等相关技术&#xff0c;是人们理想的一种生活方式…

TCP/IP校验和(浅析+实例)

校验和的作用   按照协议的规定&#xff0c;报文到达每一层&#xff0c;首先验证校验和是否正确&#xff0c;丢弃掉不正确的报文&#xff0c;再才会进行后续操作。  那么校验和是怎么计算的呢&#xff1f;  校验和的计算方法(以 IP 首部中的校验和为例) 方法是计算16位的二…