javascript事件捕获机制【深入分析IE和DOM中的事件模型】

发布时间 - 2026-01-10 21:50:30    点击率:

本文实例分析了javascript事件捕获机制。分享给大家供大家参考,具体如下:

1.什么是事件冒泡?

在排序算法中,我们学过冒泡排序法,所谓冒泡就是让底层的东西浮出水面,对于事件冒泡也同样是如此,

下面我们来看一个例子来说明什么是事件冒泡。

<div>
 <button>测试</button>
</div>
<script>
 $("div").bind("click",function(){alert("div")});
 $("button").bind("click",function(){alert("button"});
</script>

当支持事件冒泡时,当我们点击"测试”按钮时,首先会执行的是alert("button"),固名思意:

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

当div,button,html根元素都有事件时,事件执行的顺序为:

button->div->html

2.什么是事件捕获?

我们再来看事件捕获,相对于事件捕获,处理时间的顺序与事件冒泡截然相反,同样:

<div>
 <button>测试</button>
</div>
<script>
 $("div").bind("click",function(){alert("div")});
 $("button").bind("click",function(){alert("button"});
</script>

执行这段代码,首先会alert("div"),其次会alert("button")。我们明确事件捕获的概念:

事件从最不精确的对象(document 对象)开始触发,然后到最精确。

同样的如果button,div,html元素上都有绑定事件,那么事件的实行顺序为:

html->div->button

3.各个版本的浏览器对事件的处理机制?

(1)在DOM中,即支持事件冒泡,也支持事件捕获,在W3C的标准中,认为任何事件都是从事件捕获出发,找到最终的结点,此后再进行冒泡,会到根结点。

DOM中支持事件绑定的函数为:

addEventListener("事件名",函数,userCapture);

对于userCapture参数,默认为false,支持事件冒泡。
若在userCapture参数,为true时,支持事件捕获。

(2)对于很多浏览器,都支持addEventListener方法,但是IE不支持!

(3) IE中的事件处理机制,IE中只支持事件冒泡,IE中有一个独有的事件绑定方法

attachEvent方法,此方法有两个参数:

attachEvent("事件名","函数名")

4.如何阻止事件的传播?

无论是事件冒泡还是事件捕获都是可以阻止的。

(1)首先在W3C中阻止事件的传播方法为:stopPropagation(),在IE中,通过设置

cancelBubble=true;

(2) 如何阻止事件的默认行为?在W3C标准中,使用preventDefault方法,在IE中通过设置

window.event.returnValue = false;

PS:关于javascript常用事件及相关说明还可参考本站在线工具:

javascript事件与功能说明大全:
http://tools./table/javascript_event

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript事件相关操作与技巧大全》、《JavaScript时间与日期操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# javascript  # 事件捕获  # IE  # DOM  # 事件模型  # 带你快速理解javascript中的事件模型  # js事件模型与自定义事件实例解析  # javascript事件模型介绍  # javascript事件模型实例分析  # Javascript基础知识(一)核心基础语法与事件模型  # 关于javascript DOM事件模型的两件事  # javascript 传统事件模型构造的事件监听器实现代码  # javascript事件模型代码  # 详解JS浏览器事件模型  # 绑定  # 都有  # 最不  # 的是  # 都是  # 相关内容  # 遍历  # 中有  # 是从  # 感兴趣  # 这段  # 数据结构  # 给大家  # 再来  # 不支持  # 当我们  # 还可  # 相对于  # 更多关于  # 学过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 在Oracle关闭情况下如何修改spfile的参数  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  iOS中将个别页面强制横屏其他页面竖屏  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  免费视频制作网站,更新又快又好的免费电影网站?  网站建设整体流程解析,建站其实很容易!  微信小程序 HTTPS报错整理常见问题及解决方案  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何在阿里云部署织梦网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何用花生壳三步快速搭建专属网站?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何彻底卸载建站之星软件?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  中山网站推广排名,中山信息港登录入口?  如何快速打造个性化非模板自助建站?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Python3.6正式版新特性预览  nodejs redis 发布订阅机制封装实现方法及实例代码  用v-html解决Vue.js渲染中html标签不被解析的问题  如何快速搭建高效可靠的建站解决方案?  如何在云主机上快速搭建网站?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  新三国志曹操传主线渭水交兵攻略  Laravel如何实现事件和监听器?(Event & Listener实战)  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何实现API版本控制_Laravel版本化API设计方案  奇安信“盘古石”团队突破 iOS 26.1 提权  Python面向对象测试方法_mock解析【教程】  简单实现Android验证码  jquery插件bootstrapValidator表单验证详解  如何在Windows虚拟主机上快速搭建网站?  如何在IIS7上新建站点并设置安全权限?  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel如何使用Vite进行前端资源打包?(配置示例)