js 的事件监听

188 阅读2分钟

JavaScript中的事件监听是实现交互功能的重要机制,以下是关于它的介绍:

事件监听的概念

事件监听是指在网页或应用程序中,为特定的元素或对象绑定一个事件处理函数,当该元素触发特定事件(如点击、鼠标移动、键盘输入等)时,浏览器会自动调用相应的事件处理函数,执行预先定义好的操作。

常用的事件类型

  • 鼠标事件:包括 click (点击)、 mousedown (鼠标按下)、 mouseup (鼠标松开)、 mousemove (鼠标移动)等。
  • 键盘事件:如 keydown (键盘按键按下)、 keyup (键盘按键松开)、 keypress (键盘按键按下并产生字符)。
  • 表单事件:有 submit (表单提交)、 input (输入框内容改变)、 change (表单元素值改变)等。
  • 页面事件:例如 load (页面加载完成)、 resize (窗口大小改变)、 scroll (页面滚动)。

事件监听的方法

  • 传统的事件绑定方式:通过元素的属性来绑定事件处理函数,如 点击我 ,在JavaScript中可以通过 element.onclick = function() {} 来实现。
  •  addEventListener 方法:这是更现代和灵活的方式,可添加多个事件处理函数且不会覆盖之前的。语法为 element.addEventListener(eventType, eventHandler, useCapture) ,如 button.addEventListener('click', function() { console.log('点击了按钮'); }, false) 。
  •  attachEvent 方法:主要用于IE8及以下浏览器,语法为 element.attachEvent('on' + eventType, eventHandler) ,如 button.attachEvent('onclick', function() { console.log('点击了按钮'); }); 。

事件对象

在事件处理函数中,会有一个默认的事件对象参数,包含了与事件相关的所有信息,如鼠标位置、键盘按键码等。可以通过 event 参数来访问,例如在鼠标点击事件中, event.clientX 和 event.clientY 可获取鼠标在浏览器窗口中的坐标。

事件冒泡和捕获

  • 事件冒泡:事件从最内层的元素开始触发,然后逐步向外层元素传播,如在一个有多层嵌套的 div 中点击内部的 div ,点击事件会先在内部 div 触发,然后依次向外层 div 传播。
  • 事件捕获:与冒泡相反,事件从最外层的元素开始触发,逐步向内层元素传播。在 addEventListener 方法中,第三个参数为 true 时表示在捕获阶段触发,为 false (默认)则在冒泡阶段触发。