当前位置:首页 > 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实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现图片预览

js实现图片预览

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

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…