自定义事件怎么传参数到监听器里?

轩辕天朝 阅读 7

我在用 new CustomEvent() 创建自定义事件,但不知道怎么把数据传给监听函数。试过在 detail 里放对象,但取出来是 undefined,是不是哪里写错了?

比如我这样发事件:

const event = new CustomEvent('myEvent', {
  detail: { id: 123, name: 'test' }
});
element.dispatchEvent(event);

然后监听的时候:

element.addEventListener('myEvent', (e) => {
  console.log(e.detail); // 这里打印出来是 undefined
});

明明写了 detail,为啥拿不到数据啊?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
a'ゞ晶晶
检查一下你监听的那个 element 和触发事件的那个 element 是不是同一个对象,不是同一个的话 detail 确实是 undefined。

如果用的是老浏览器(IE),CustomEvent 需要 polyfill:

(function () {
if (typeof CustomEvent === 'function') return;
function CustomEvent(event, params) {
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
CustomEvent.prototype = Event.prototype;
window.CustomEvent = CustomEvent;
})();
点赞
2026-03-18 16:01