DOM事件知识点

这篇文章主要是总结一些DOM事件的基础知识点。

DOM事件的级别

dom事件级别.png

DOM3是鼠标 键盘这些事件

DOM事件模型

捕获和冒泡
捕获是从上到下 冒泡是从下到上

DOM事件流

分三个阶段
点击鼠标 -> 捕获 -> 目标阶段 目标对象 -> 冒泡

描述事件捕获的具体流程

window -> document ->html标签 ->body-> ...->目标元素

Event对象的常见应用

event.preverntDefault() 阻止默认行为
event.stopPropagation() 阻止冒泡事
event.stoplmmediatePropagation()
event.currentTarget 当前绑定的事件的对象
event.target 触发事件的目标对象

自定义事件

var eve = new Event('custome');
            var ev = document.getElementById('div');
            ev.addEventListener('custome',function(){
                console.log('custome')
            })

            ev.dispatchEvent(eve)

一些测试代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        #ev {
            width: 300px;
            height: 100px;
            background: red;
            color: #fff;
            text-align: center;
            line-height: 100px;
        }
    </style>
    <title>DOM事件代码示例</title>
</head>

<body>
    <div id="ev">
        目标元素
    </div>
    <script>
        // 捕获
        var ev = document.getElementById('ev');
        window.addEventListener('click', function () {
            console.log('window captrue')
        }, true) // false为箭头捕获  true为监听冒泡

        document.addEventListener('click', function () {
            console.log('document captrue')
        }, true)
        // html节点
        document.documentElement.addEventListener('click', function () {
            console.log('html captrue')
        }, true)
        document.body.addEventListener('click', function () {
            console.log('body captrue')
        }, true)

        ev.addEventListener('click', function () {
            console.log('ev captrue')
        }, true)

        // 冒泡
        var ev = document.getElementById('ev');
        window.addEventListener('click', function () {
            console.log('window bubbling')
        }, false) // false为箭头捕获  true为监听冒泡

        document.addEventListener('click', function () {
            console.log('document bubbling')
        }, false)
        // html节点
        document.documentElement.addEventListener('click', function () {
            console.log('html bubbling')
        }, false)
        document.body.addEventListener('click', function () {
            console.log('body bubbling')
        }, false)

        ev.addEventListener('click', function () {
            console.log('ev bubbling')
        }, false)


        // 自定义事件
        var eve = new Event('test');
        ev.addEventListener('test', function () {
            console.log('test dispatch')
        })
        // 触发自定义事件
        ev.dispatchEvent(eve);

        var eve1 = new CustomEvent('test1', {
            detail: {
                username: "davidwalsh"
            },
            bubbles: true,
            cancelable: false
        })

        ev.addEventListener('test1',function(e){
            console.log(e);
        })

       ev.dispatchEvent(eve1)
    </script>
</body>

</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、DOM事件 文档对象模型是一种与编程语言及平台无关的API(Application programming I...
    8d2855a6c5d0阅读 219评论 0 0
  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 1,296评论 3 11
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 7,134评论 1 6
  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    周花花啊阅读 609评论 0 3
  • 梅花对寒冷的感觉叫做陶醉 柳树对春风的感觉叫做品味 有一种方式可以把痛苦变做甜美 有一种路径可以让怨恨隐退 是海,...
    若水清溪阅读 145评论 0 3