使用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
?
答案 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