diff --git a/dom.bs b/dom.bs index b4c0abd3..fed35323 100644 --- a/dom.bs +++ b/dom.bs @@ -908,9 +908,14 @@ for historical reasons.
+[Exposed=*] +interface EventTargetInternals { + attribute EventTarget parent; +}; + [Exposed=*] interface EventTarget { - constructor(); + constructor(optional EventTargetCallback cb); undefined addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options = {}); undefined removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options = {}); @@ -930,6 +935,8 @@ dictionary AddEventListenerOptions : EventListenerOptions { boolean once = false; AbortSignal signal; }; + +callback EventTargetCallback = undefined (EventTargetInternals internals);
An {{EventTarget}} object represents a target to which an event can be dispatched @@ -939,6 +946,63 @@ when something has occurred. list of zero or more event listeners). It is initially the empty list. +
Each {{EventTarget}} object has an associated attached internals (null +or an {{EventTargetInternals}} object), initially null. + +
Each {{EventTargetInternals}} object has an associated eventTarget (an {{EventTarget}} object). + +
The new EventTarget(cb) constructor steps are: + +
If cb is not null then: + +
Let eventTargetInternals a new {{EventTargetInternals}} instance. + +
Set eventTargetInternals's eventTarget to + this. + +
Set this's attached internals to + eventTargetInternals. +
To set the parent given +an {{EventTargetInternals}} internals and {{EventTarget}} theParent: + +
Let targets be a new list. + +
Let parent be theParent. + +
While parent is non-null:
+ +An event listener can be used to observe a specific event and consists of: @@ -1322,6 +1386,9 @@ property of the event being dispatched.
While parent is non-null: