js事件

一、事件流

事件流就是事件在页面中的传播顺序。

1、事件冒泡

事件冒泡就是由最里面的元素向外传播

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>

<body>
    <div id="myDiv">点我</div>
</body>

</html>

在点击div元素之后,事件的传播顺序

1).<div>

2).<body>

3).<html>

4).document

2.事件捕获

与事件冒泡相反,在事件达到目标前对其进行拦截。

3.事件流

事件捕获、到达目标、时间冒泡

顺序:事件捕获最先发生,然后事件目标接收到事件,最后阶段是冒泡、最迟要在这个阶段响应事件。

二、事件类型

1.用户界面事件


1.load  当页面完全加载后

第一种在window加载完后触发

window.addEventListener("load",(event)=>{
console.log(“Load”)
}

第二种图片上也会触发

<body>
    <img id="img" src="../../image/573db3c30d03c80599691d1b36c13917.jpg" alt="">
    <script>
        //为图片指定load事件处理程序,处理程序接收event对象
        let img = document.getElementById("img")
        img.addEventListener("load", (event) => {
            console.log(event.target.src)
                //打印图片地址
        })
    </script>
</body>

打印结果:

js事件

 

 2.unload事件 : 它会在文档卸载后触发。一般用在从一个页面导航到另一个页面时触发,最常用于清除缓存,以免内存泄漏。

3.resize事件: 当浏览器窗口被缩放到新的高度或者宽度时,会触发

2.焦点事件

1.blur:失去焦点时触发

2.focus:当元素获得焦点时触发。事件不冒泡。

3.focusin:当元素获得焦点时触发。

4.focusout:当元素失去焦点时触发。

3.鼠标和滚动事件

1.click:单击鼠标

2.dbclick:双击鼠标

3.mousedown:按下任意鼠标键

4.mouseenter:鼠标进入元素内部

5.mouseleave:鼠标移出元素内部

6.mousemove:鼠标在元素上移到时触发

7.mouseup:释放鼠标

8.mousewheel:鼠标滚动或带滚轮的类似设备上滚轮的交互。

4.客户端坐标

clientX/Y:表示事件发生时鼠标光标在视口中的坐标

let Div = document.getElementById("Div")
        Div.addEventListener("load", (event) => {
            console.log(`${event.clientX}`, `${event.clientY}`)
        })

5.键盘事件

keydown:按下键盘时出发啊

keypress:用户按下键盘上某个字符时触发

keyup:释放键盘上某个键时触发

三、事件委托

利用事件冒泡原理,把事件加到父极元素上,以此触发效果。

 

1)比如说这里有三个事件,要在点击时应该执行某个操作

js事件

 

 2)一般呢是分别指定三个事件处理程序

js事件

 

 3)事件的数量太多,会影响想性能。而使用事件委托,只要所有元素共同的祖先添加一个事件处理程序,就可以解决问题。

js事件

 

优点:

 1.减少整个页面所需的内存,提升整体内存。

2.只要页面渲染出可点击的元素,可以无延迟的起作用。

 

上一篇:前端js常见面试题


下一篇:JS-练习:写一个函数,用户输入三个不同的数字,输出最大值