当前位置:首页 > JavaScript

js 实现监听

2026-03-13 23:26:16JavaScript

事件监听基础方法

在JavaScript中,可以通过addEventListener方法监听DOM事件。语法如下:

element.addEventListener(eventType, callbackFunction, useCapture);
  • eventType: 事件类型(如"click""keydown")。
  • callbackFunction: 事件触发时执行的函数。
  • useCapture(可选): 布尔值,指定事件捕获阶段(true)或冒泡阶段(false,默认)。

示例:监听按钮点击事件

const button = document.querySelector('button');
button.addEventListener('click', () => {
  console.log('按钮被点击');
});

移除事件监听

使用removeEventListener移除已添加的监听器,需传入与添加时相同的函数引用:

const handler = () => console.log('仅触发一次');
button.addEventListener('click', handler);
button.removeEventListener('click', handler);

监听自定义事件

通过CustomEvent创建和触发自定义事件:

const event = new CustomEvent('customEvent', { detail: { data: '自定义数据' } });
element.addEventListener('customEvent', (e) => console.log(e.detail.data));
element.dispatchEvent(event); // 触发事件

监听对象属性变化

使用ProxyObject.defineProperty监听对象属性变化:
Proxy示例

const target = { value: 1 };
const proxy = new Proxy(target, {
  set(obj, prop, newVal) {
    console.log(`属性 ${prop} 从 ${obj[prop]} 变为 ${newVal}`);
    obj[prop] = newVal;
    return true;
  }
});
proxy.value = 2; // 输出日志

监听URL哈希变化

通过hashchange事件监听URL哈希部分的变化:

window.addEventListener('hashchange', () => {
  console.log('哈希值变为:', window.location.hash);
});

监听浏览器窗口大小变化

使用resize事件监听窗口尺寸变化:

window.addEventListener('resize', () => {
  console.log('窗口尺寸:', window.innerWidth, window.innerHeight);
});

监听表单输入变化

实时监听输入框内容变化(使用input事件):

js 实现监听

const input = document.querySelector('input');
input.addEventListener('input', (e) => {
  console.log('当前输入:', e.target.value);
});

性能优化建议

  • 对于高频事件(如scrollmousemove),使用节流(throttle)或防抖(debounce)减少回调执行次数。
  • 在不需要时及时移除监听器,避免内存泄漏。

标签: js
分享给朋友:

相关文章

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现吸色

js实现吸色

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

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…