我知道如何在JavaScript中触发事件,但我不知道如何使其可取消.通过event.preventDefault()在事件处理程序.
document.dispatchEvent(new CustomEvent("name-of-event", {}));
Run Code Online (Sandbox Code Playgroud)
我编写了以下代码,但是如何以原生方式通过event.preventDefault()?
document.dispatchEvent(new CustomEvent("my-event",function keepGoing(result){
if(result){
// continue ...
}
}));
// And then in event listener:
document.addEventListener('my-event',function(event,keepGoing){
keepGoing(true);
// Or keepGoing(false);
});
Run Code Online (Sandbox Code Playgroud)
该CustomEvent构造函数接受第二个参数选项,您可以使用,使事件cancelable.请参阅文章在MDN上创建和触发事件.
var event = new CustomEvent("my-event", {
cancelable: true
})
document.addEventListener('my-event', function (event) {
event.preventDefault()
})
console.log(
document.dispatchEvent(event) ? 'Event was not cancelled' : 'Event was cancelled'
)Run Code Online (Sandbox Code Playgroud)
CustomEvent构造函数接受CustomEventInit作为第二个参数。CustomEventInit是EventInit的扩展,在此处描述https://developer.mozilla.org/zh-CN/docs/Web/API/Event/Event
到底。
document.dispatchEvent(new CustomEvent('my-event', {cancelable: true}));
Run Code Online (Sandbox Code Playgroud)