事件:cancelable 属性

注意:此功能在Web Workers中可用。

cancelableEvent 接口的一个只读属性,指示事件是否可以取消,从而阻止事件发生,使其就像从未发生过一样。

如果事件不可取消,则其 cancelable 属性将为 false,并且事件监听器无法阻止事件发生。

大多数可以取消的浏览器原生事件都是由用户与页面交互产生的。取消 clickwheelbeforeunload 事件将分别阻止用户点击某个内容、使用鼠标滚轮滚动页面或离开页面。

由其他 JavaScript 代码创建的 合成事件 在创建时定义了它们是否可以取消。

要取消事件,请在事件上调用 preventDefault() 方法。这将阻止实现执行与事件关联的默认操作。

处理多种事件类型的事件监听器可能希望在调用其 preventDefault() 方法之前检查 cancelable

一个布尔值,如果事件可以取消,则为 true

示例

例如,浏览器供应商建议 wheel 事件只能在监听器第一次被调用时取消——任何后续的 wheel 事件都无法取消。

js
function preventScrollWheel(event) {
  if (typeof event.cancelable !== "boolean" || event.cancelable) {
    // The event can be canceled, so we do so.
    event.preventDefault();
  } else {
    // The event cannot be canceled, so it is not safe
    // to call preventDefault() on it.
    console.warn(`The following event couldn't be canceled:`);
    console.dir(event);
  }
}

document.addEventListener("wheel", preventScrollWheel);

规范

规范
DOM 标准
# ref-for-dom-event-cancelable②

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。