Event

Baseline 已廣泛支援

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

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

Event 介面代表在 EventTarget 上發生的事件。

事件可以由使用者操作觸發,例如點選滑鼠按鈕或按下鍵盤,也可以由 API 生成以表示非同步任務的進度。它還可以透過程式設計方式觸發,例如透過呼叫元素的 HTMLElement.click() 方法,或者透過定義事件,然後使用 EventTarget.dispatchEvent() 將其傳送到指定的 target。

事件有很多型別,其中一些使用基於主 Event 介面的其他介面。Event 本身包含所有事件共有的屬性和方法。

許多 DOM 元素可以設定為接受(或“監聽”)這些事件,並執行程式碼來處理(或“響應”)它們。事件處理程式通常使用 EventTarget.addEventListener() 連線(或“附加”)到各種 HTML 元素(例如 <button><div><span> 等),這通常取代了使用舊的 HTML 事件處理屬性。此外,如果正確新增,這些處理程式也可以使用 removeEventListener() 在需要時斷開連線。

注意:一個元素可以有多個此類處理程式,即使是針對完全相同的事件——特別是如果獨立的程式碼模組分別附加了它們,各自用於其獨立的用途。(例如,一個網頁中有一個廣告模組和一個統計模組都在監控影片觀看。)

當存在許多巢狀的元素,每個元素都有自己的處理程式時,事件處理可能會變得非常複雜——尤其是在父元素接收與其子元素相同的事件,因為它們在“空間上”重疊,事件實際上發生在兩者中,並且此類事件的處理順序取決於每個觸發的處理程式的 事件冒泡 設定。

基於 Event 的介面

以下是基於主 Event 介面的介面列表,並連結到 MDN API 參考中的相應文件。

請注意,所有事件介面的名稱都以“Event”結尾。

建構函式

Event()

建立一個 Event 物件,並將其返回給呼叫者。

例項屬性

Event.bubbles 只讀

一個布林值,指示事件是否會透過 DOM 冒泡。

Event.cancelable 只讀

一個布林值,指示事件是否可取消。

Event.composed 只讀

一個布林值,指示事件是否可以在 Shadow DOM 和普通 DOM 之間的邊界上傳播。

Event.currentTarget 只讀

對當前註冊的事件 target 的引用。這是事件當前預定要傳送到的物件。在重新定向過程中,此物件可能已被更改。

Event.defaultPrevented 只讀

指示是否透過呼叫 event.preventDefault() 取消了事件。

Event.eventPhase 只讀

指示正在處理事件流的哪個階段。它是以下數字之一:NONECAPTURING_PHASEAT_TARGETBUBBLING_PHASE

Event.isTrusted 只讀

指示事件是由瀏覽器(例如,在使用者單擊後)還是由指令碼(例如,使用事件建立方法)發起的。

Event.srcElement 只讀 已棄用

Event.target 屬性的別名。請使用 Event.target

Event.target 只讀

對事件最初分派到的物件的引用。

Event.timeStamp 只讀

事件建立時的時間(以毫秒為單位)。根據規範,此值是自紀元以來的時間——但實際上,瀏覽器的定義各不相同。此外,目前正在努力將其更改為 DOMHighResTimeStamp

Event.type 只讀

標識事件型別的名稱。

舊版和非標準屬性

Event.cancelBubble 已棄用

Event.stopPropagation() 的歷史別名,應使用該方法替代。在事件處理程式返回之前將其值設定為 true 會阻止事件的傳播。

Event.explicitOriginalTarget 非標準 只讀

事件的顯式原始 target。

Event.originalTarget 非標準 只讀

事件的原始 target,在任何重新定向之前。

Event.returnValue 已棄用

為確保現有網站繼續正常工作而仍然支援的歷史屬性。請使用 Event.preventDefault()Event.defaultPrevented

Event.scoped 只讀 已棄用

一個布林值,指示給定事件是否會透過 shadow root 冒泡到標準 DOM。請使用 composed

例項方法

Event.composedPath()

返回事件的路徑(將為其呼叫偵聽器的物件陣列)。如果 shadow root 是以其 ShadowRoot.mode closed 建立的,則不包括 shadow tree 中的節點。

Event.preventDefault()

取消事件(如果事件可取消)。

Event.stopImmediatePropagation()

對於此特定事件,阻止呼叫任何其他偵聽器。這包括附加到同一元素的偵聽器以及附加到稍後(例如,在捕獲階段)將遍歷的元素的偵聽器。

Event.stopPropagation()

停止事件在 DOM 中的進一步傳播。

已廢棄的方法

Event.initEvent() 已棄用

初始化建立的 Event 的值。如果事件已分派,則此方法無效。請使用建構函式(Event())進行替代。

規範

規範
DOM
# interface-event

瀏覽器相容性

另見