始终调度 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>
根据(我对)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>