我在创建和收听我在javascript中创建的自定义事件时遇到问题。我想我在这里缺少一些东西,但我不确定是什么。这是代码:
document.body.addEventListener('launch', onLaunch);
function onLaunch(item) {
console.log("laucnhed with", item);
}
function launch(id) {
console.log("launch", id);
const event = new CustomEvent("launch", {activity: id});
document.body.dispatchEvent(event);
}
所以第一个日志“启动”,并且id正确显示,但是onLaunch函数中的第二个正确触发,但是该项没有详细信息 - 日志item.detail为null。需要做什么才能将该activity属性正确传递给侦听器函数?谢谢!
答案 0 :(得分:1)
根据Mozilla Developer Network的文档:
CustomEvent.detail
初始化事件时传递的任何数据。
您需要像这样包装您的活动详情:
const event = new CustomEvent("launch", { detail: { activity: id } });
然后,您可以将事件侦听器中的日志记录更改为:
console.log("launched with", item.detail.activity);
可以找到CustomEvent构造函数的更详细示例here。