JavaScript事件01——事件流

大纲:
  • 概念(事件、事件流)
  • 事件流模型(事件冒泡、事件捕获、DOM事件流)
一、概念:

1、事件:
事件就是用户或浏览器自身执行的某种动作。比如click,load等
2、事件流:
事件流描述的是从页面中接收事件的顺序

二、事件流模型

1、事件冒泡流

  • 什么是事件冒泡:

事件冒泡是由IE开发团队提出来的事件流。简单来说,就是事件开始的子级元素一层一层向父级元素传播。

  • 思路:

1、给button,div,body都绑定了click事件
2、点击button时,依次向上弹出

  • 例子:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件冒泡</title>
</head>
<body>
    <div id="box">
        <button id="btn">按钮</button>
    </div>
</body>
<script type="text/javascript">
    var btn = document.getElementById('btn');
    var box = document.getElementById('box');
    var body = document.body;
    btn.onclick = function(){
        alert('这是按钮');
    }
    box.onclick = function(){
        alert('这是box');
    }
    body.onclick = function(){
        alert('这是body');
    }
</script>
</html>
  • 结果:

依次弹出“这是按钮”,“这是box”,“这是body”

2、事件捕获流

  • 什么是事件捕获:

事件捕获是由Netscape团队提出的事件流。与事件冒泡相反,它是事件开始从根元素一层一层向子级元素传播。

  • 例子:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件捕获</title>
</head>
<body>
    <div id="box">
        <button id="btn">按钮</button>
    </div>
</body>
<script type="text/javascript">
    var btn = document.getElementById('btn');
    var box = document.getElementById('box');
    var body = document.body;
    btn.addEventListener('click',function(){
        alert('这是按钮');
    },true)
    box.addEventListener('click',function(){
        alert('这是box');
    },true)
    body.addEventListener('click',function(){
        alert('这是body');
    },true)
</script>
</html>
  • 结果:

依次弹出“这是body”,“这是box”,“这是按钮”

  • 注意:

1、在IE9+的浏览器也支持事件捕获,结果如上。在IE8之前都不支持事件捕获,只支持事件冒泡。
2、当addEventListener的第三个参数为true时,开启事件捕获。参数为false,开启事件冒泡

3、DOM事件流

  • 什么是DOM事件流

DOM2级事件规定事件流有三个阶段:
1、事件捕获阶段
2、处于目标阶段
3、事件冒泡阶段

  • DOM2级事件规定的阶段
    1、捕获(document——>html——>body)
    2、处于目标(div) (在事件处理中被看成冒泡阶段的一部分)
    3、冒泡阶段

  • IE9+,chrome、firefox等浏览器
    都会在捕获阶段触发事件对象上的事件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,925评论 1 11
  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 5,043评论 3 11
  • js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...
    道无虚阅读 7,332评论 0 2
  • JavaScript 与 HTML 之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬...
    threetowns阅读 2,870评论 0 0
  • 事件流 JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互...
    DHFE阅读 4,298评论 0 3

友情链接更多精彩内容