如何解雇自定义可取消事件

beh*_*ati 6 javascript events

我知道如何在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)

gyr*_*yre 9

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)


woo*_*ieb 5

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)