当前位置:首页 > JavaScript

js实现监听

2026-04-06 23:29:18JavaScript

事件监听基础

在JavaScript中,事件监听是通过addEventListener方法实现的。该方法允许为DOM元素添加事件处理函数,语法如下:

element.addEventListener(eventType, callbackFunction, options);
  • eventType:字符串,指定要监听的事件类型(如"click""keydown"
  • callbackFunction:事件触发时执行的函数
  • options:可选参数,可指定captureonce等配置

常用事件类型

  • 鼠标事件clickdblclickmouseentermouseleave
  • 键盘事件keydownkeyupkeypress
  • 表单事件submitchangefocusblur
  • 窗口事件resizescrollload

事件对象

回调函数接收一个event对象参数,包含事件相关信息:

js实现监听

element.addEventListener("click", function(event) {
  console.log(event.target); // 触发事件的元素
  console.log(event.clientX); // 鼠标X坐标
});

移除监听

使用removeEventListener移除已添加的监听器,需保持参数一致:

const handler = () => console.log("Clicked");
element.addEventListener("click", handler);
element.removeEventListener("click", handler);

事件委托

通过事件冒泡机制,在父元素上监听子元素的事件:

js实现监听

document.querySelector("#parent").addEventListener("click", (event) => {
  if (event.target.matches(".child")) {
    console.log("Child element clicked");
  }
});

自定义事件

可以创建和触发自定义事件:

const customEvent = new CustomEvent("myEvent", { detail: { data: 123 } });
element.addEventListener("myEvent", (e) => console.log(e.detail.data));
element.dispatchEvent(customEvent);

异步事件处理

使用Promise包装事件监听:

function waitForEvent(element, eventType) {
  return new Promise(resolve => {
    element.addEventListener(eventType, resolve, { once: true });
  });
}

await waitForEvent(button, "click");
console.log("Button clicked");

性能优化

  • 对高频事件(如scrollresize)使用防抖/节流
  • 避免匿名函数作为回调,以便于移除监听
  • 合理使用passive: true选项改善滚动性能

浏览器兼容性

  • 现代浏览器均支持addEventListener
  • IE8及以下需使用attachEvent方法(已废弃)
  • 推荐使用polyfill或转译工具处理兼容性问题

标签: js
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…