始终调度 CustomEvent returns true

Dispatching CustomEvent always returns true

根据(我对)documentation 的理解,如果任何事件侦听器正在调用 Event.preventDefault()dispatchEvent 方法应该 return false处理时的方法。 但是如果我尝试使用 CustomEvent 对象,dispatchEvent 总是 returns true。请检查以下代码段:

var div = document.getElementById("test");

div.addEventListener("custom", function(e) {
  e.preventDefault();
});

div.innerHTML = div.dispatchEvent(new CustomEvent("custom"));
<div id="test"></div>

我哪里错了?

您正在调度一个名为 'test' 的自定义事件,但正在侦听 'custom',因此您的处理程序永远不会被调用。您还需要通过将 cancelable: true 添加到 init 对象来确保您的事件可取消:

var div = document.getElementById("test");

div.addEventListener("custom", function(e) {
  e.preventDefault();
});

div.innerHTML = div.dispatchEvent(new CustomEvent("custom", {
    cancelable: true
}));
<div id="test"></div>