Event
注意:此功能在 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”結尾。
AnimationEventAudioProcessingEvent已棄用BeforeUnloadEventBlobEventClipboardEventCloseEventCompositionEventCustomEventDeviceMotionEventDeviceOrientationEventDragEventErrorEventFetchEventFocusEventFontFaceSetLoadEventFormDataEventGamepadEventHashChangeEventHIDInputReportEventIDBVersionChangeEventInputEventKeyboardEventMediaStreamEvent已棄用MessageEventMouseEventMutationEvent已棄用OfflineAudioCompletionEventPageTransitionEventPaymentRequestUpdateEventPointerEventPopStateEventProgressEventRTCDataChannelEventRTCPeerConnectionIceEventStorageEventSubmitEventTimeEventTouchEventTrackEventTransitionEventUIEventWebGLContextEventWheelEvent
建構函式
Event()-
建立一個
Event物件,並將其返回給呼叫者。
例項屬性
Event.bubbles只讀-
一個布林值,指示事件是否會透過 DOM 冒泡。
Event.cancelable只讀-
一個布林值,指示事件是否可取消。
Event.composed只讀-
一個布林值,指示事件是否可以在 Shadow DOM 和普通 DOM 之間的邊界上傳播。
Event.currentTarget只讀-
對當前註冊的事件 target 的引用。這是事件當前預定要傳送到的物件。在重新定向過程中,此物件可能已被更改。
Event.defaultPrevented只讀-
指示是否透過呼叫
event.preventDefault()取消了事件。 Event.eventPhase只讀-
指示正在處理事件流的哪個階段。它是以下數字之一:
NONE、CAPTURING_PHASE、AT_TARGET、BUBBLING_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.modeclosed 建立的,則不包括 shadow tree 中的節點。 Event.preventDefault()-
取消事件(如果事件可取消)。
Event.stopImmediatePropagation()-
對於此特定事件,阻止呼叫任何其他偵聽器。這包括附加到同一元素的偵聽器以及附加到稍後(例如,在捕獲階段)將遍歷的元素的偵聽器。
Event.stopPropagation()-
停止事件在 DOM 中的進一步傳播。
已廢棄的方法
Event.initEvent()已棄用-
初始化建立的 Event 的值。如果事件已分派,則此方法無效。請使用建構函式(
Event())進行替代。
規範
| 規範 |
|---|
| DOM # interface-event |
瀏覽器相容性
載入中…