DOM事件流

DOM(Document Object Model——文档对象模型)是载入到浏览器中的文档模型,它用节点树的形式来表现文档,每个节点代表文档的构成部分(例如: element——页面元素、字符串或注释等等)。当一个页面元素产生一个事件时,该事件会在元素节点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流。

一个完整的事件流分为三个阶段:

    1) 捕获阶段

    2) 目标阶段

    3) 冒泡阶段

    

捕获阶段事件从根节点自上而下向目标节点传播,具体流程:目标元素产生事件→ window对象接收到该事件 → document对象接收到该事件 → html元素接收到该事件→ body元素接收到该事件→ …… → 目标元素接收到该事件。

    

冒泡阶段与捕获阶段正好相反,事件在节点树中自下而上传播。由于老版本的浏览器不太支持事件捕获,事件传播默认为冒泡(addEventListener的第三个参数默认为false)。

代码示例:

<body>
  <div id="ev">目标元素</div>
<script>
  window.addEventListener("click", function(){
    console.log("window captrue")
  }, true);

  document.addEventListener("click", function(){
    console.log("document captrue")
  }, true);

  document.documentElement.addEventListener("click", function(){
    console.log("html captrue")
  }, true);

  document.body.addEventListener("click", function(){
    console.log("body captrue")
  }, true);
  
  document.getElementById("ev").addEventListener("click", function(){
    console.log("ev captrue")
  }, true);
</script>
</body>

输出结果:

 

相关链接:https://www.w3.org/TR/DOM-Level-3-Events/#dom-event-architecture

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值