事件:cancelable 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

Event 介面的只讀屬性 **cancelable** 指示事件是否可以被取消,從而阻止其發生,就好像事件從未發生過一樣。

如果事件不能被取消,則其 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②

瀏覽器相容性