defaultPrevented签入自定义事件

时间:2015-11-10 18:58:05

标签: javascript events

使用Javascript发出自定义事件时,defaultPrevented属性始终为false。这是一个显示此行为的简短示例:

var event = new CustomEvent("my-event", {detail: "something"});

document.addEventListener("my-event", function(ev) {
    ev.preventDefault();
    console.log(ev.detail);
});

document.dispatchEvent(event); // => "something" from console.log above
console.log(event.defaultPrevented); // => false

MDN中有CustomEvent.initCustomEvent()的链接有一个参数cancelable(我猜这是问题所在),但该方法已被弃用。如何检查自定义事件中是否调用了preventDefault

1 个答案:

答案 0 :(得分:2)

CustomEvent构造函数的第二个参数接受具有以下属性的对象:

  • bubbles - 布尔值,指示事件是否应该是

  • cancelable - 指示事件是否可取消的布尔值(这是我遇到的问题)

  • 详细信息 - 您希望随事件传递的任何自定义数据。

在上面的示例中,只需添加cancelable,它就会提供正确的输出:

var event = new CustomEvent("my-event", {detail: "something", cancelable: true});

document.addEventListener("my-event", function(ev) {
    ev.preventDefault();
    console.log(ev.detail);
});

document.dispatchEvent(event); // => "something" from console.log above
console.log(event.defaultPrevented); // => true