当前位置:首页 > JavaScript

js 监听实现

2026-01-31 22:07:51JavaScript

事件监听基础方法

使用 addEventListener 是标准的事件监听方式,支持多个监听器且可精确控制事件流阶段。语法如下:

element.addEventListener(eventType, callback, options);

eventType 为字符串(如 "click"),callback 是事件触发时执行的函数。options 可指定 capture(捕获阶段触发)或 passive(不阻止滚动优化性能)。

移除事件监听

通过 removeEventListener 移除监听时需确保参数与添加时完全一致:

const handler = () => console.log('Clicked');
element.addEventListener('click', handler);
element.removeEventListener('click', handler); // 成功移除

事件委托优化

利用事件冒泡机制在父元素监听子元素事件,适合动态内容或大量子元素:

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

自定义事件触发

创建并派发自定义事件实现组件间通信:

const event = new CustomEvent('customEvent', { detail: { data: 'example' } });
element.dispatchEvent(event);

element.addEventListener('customEvent', (e) => {
  console.log(e.detail.data); // 输出: example
});

性能注意事项

频繁触发的事件(如 scrollresize)应使用防抖或节流:

function debounce(fn, delay) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}

window.addEventListener('resize', debounce(() => {
  console.log('Resize handler');
}, 200));

被动事件监听

标记 { passive: true } 提升滚动性能,但此时无法调用 preventDefault()

js 监听实现

window.addEventListener('touchstart', handler, { passive: true });

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…