此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Event.cancelable

基线
广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

Event 实例的只读属性 cancelable 表明该事件是否可以被取消,即事件是否可以像从未发生一样被阻止。

如果事件不能被取消,则其 cancelable 属性的值为 false,且事件发生时无法在事件监听回调中停止事件。

大部分由用户与页面交互产生的原生浏览器事件都可以被取消。取消 click、wheel 或 beforeunload 事件将分别阻止用户点击某些元素、滚动页面或跳离页面。

使用 JavaScript 代码创建的自定义事件,可以在初始化事件的时候声明该事件是否可以被取消。

要取消一个事件的默认行为,可以调用该事件的 preventDefault() 方法。

对于同时处理多种事件的监听回调,可能需要先检查 cancelable 属性的值,再调用这些事件的 preventDefault() 方法。

值

为一个布尔值。若事件可以被取消,其值为 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②

浏览器兼容性