Javascript,创建和收听自定义事件

时间:2016-02-11 19:15:07

标签: javascript

我在创建和收听我在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属性正确传递给侦听器函数?谢谢!

1 个答案:

答案 0 :(得分:1)

根据Mozilla Developer Network的文档:

  

CustomEvent.detail
  初始化事件时传递的任何数据。

您需要像这样包装您的活动详情:

const event = new CustomEvent("launch", { detail: { activity: id } });

然后,您可以将事件侦听器中的日志记录更改为:

console.log("launched with", item.detail.activity);

可以找到CustomEvent构造函数的更详细示例here