JS事件

156 阅读2分钟

事件流

事件冒泡:事件从最具体的元素(文档树中最深的节点)开始触发,然后向上(父元素)传播至最外层元素(文档)。

事件捕获:最外层的元素最先收到事件,而目标元素节点则最后收到事件。

Dom事件流

事件流分为三个阶段:事件捕获 、到达目标和事件冒泡。事件捕获最先发生,为提前拦截事件提供了可能,然后目标元素接收事件,最后是冒泡,最迟要在冒泡阶段响应事件。

默认情况下事件捕获阶段并不会触发事件。

事件对象

在DOM中发生事件时,所有的相关信息都会被收集并存储在一个名为event的对象中,其中包含了比如导致事件的元素、发生的事件类型,以及可能与特定事件相关的任何其他数据。

let btn=document.getElementById("btn");
btn.onclick=function(event){
    console.log(event.type)//"click"
}
btn.addEventListener("click",(event)=>{
     console.log(event.type)//"click"
}

事件对象中都会包含以下这些公共属性和方法。

-790888238__ce6d1645feecf874d7ef4b306b18f259-1956526943_IMG_20230820_103327_0_xg_0.jpg

388850212__ca57bd2cd654ac5810792d62c876e784-1988850178_IMG_20230820_103313_0_xg_0.jpg

事件类型

用户界面常用事件:

  • load事件:load事件在整个页面加载完成后触发。
  • unload事件:unload事件会在文档卸载完成后触发。一般是在从一个页面到另一个页面时触发,常用于清理引用,以避免内存泄漏。
  • resize事件:resize事件当浏览器窗口被缩放到新高度或宽度时触发。
  • scroll事件:当用户滚动包含滚动条的元素是在元素上触发

焦点常用事件:

  • blur:当元素失去焦点时触发。(这个事件不冒泡)
  • focusout:当元素失去焦点时触发。
  • focus:当元素获得焦点时触发。(不冒泡)
  • focusin:当元素获得焦点时触发。

鼠标常用事件:

  • click:单击鼠标主键或按键盘回车键时触发。
  • dblclick:双击鼠标主键时触发。
  • mousedown:按下任意鼠标键时触发。
  • mouseenter:鼠标从元素外部进入元素内部时触发。
  • mouseleave:鼠标从元素内部移动到元素外部时触发。
  • mousemove:鼠标在元素内部移动时反复触发。
  • mouseout:鼠标从一个元素移动到另一个元素时触发。

键盘与输入事件:

  • keydown:用户按下某个键时触发,并且持续按住会反复触发。。
  • keypress:用户按下某个键并产生字符时触发,并且持续按住会反复触发。
  • keyup:用户释放某个键时触发。

键码:

_-349365953__66f39ee91489bb110cdb26a572738288_1283542652_IMG_20230820_110043_0_xg_0.jpg

_-19639157__2c0a620062ea4af32913ceb2c7e83fd1_1316789408_IMG_20230820_110058_0_xg_0.jpg