- From: Alice <notifications@github.com>
- Date: Thu, 02 Oct 2025 02:21:54 -0700
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <WICG/webcomponents/issues/1114@github.com>
alice created an issue (WICG/webcomponents#1114)
In https://github.com/WICG/webcomponents/issues/1071 there was some consensus that getters for IDL attributes which refer to an element with an invalid reference target should return null:
> ```
> <label id="example-label" for="fancy-input">Example</label>
> <fancy-input id="fancy-input">
> <template
> shadowrootmode="closed"
> shadowrootreferencetarget="real-input"
> >
> <div>
> <!-- In this example, there is nothing with the ID "real-input" in the shadow tree -->
> </div>
> </template>
> </fancy-input>
>
> <script>
> const label = document.getElementById('example-label');
> console.log(label.control); // << What does this log?
> ```
When writing the [relevant spec language](https://whatpr.org/html/10995/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:reflected-idl-attribute-32), I assumed this also referred to settable IDL attributes like `popovertarget`:
> The getter steps are:
>
> Let _candidate_ be the result of running [this](https://webidl.spec.whatwg.org/#this)'s [get the attr-associated element](https://whatpr.org/html/10995/common-microsyntaxes.html#get-the-attr-associated-element).
>
> Return the result of [retargeting](https://dom.spec.whatwg.org/#retarget) _candidate_ against this.
where **get the _attr_-associated-element** requires [resolving the reference target](https://whatpr.org/html/10995/common-microsyntaxes.html#resolve-the-reference-target):
> The steps to resolve the reference target on an element _element_ are:
>
> 1. If _element_ does not have a [shadow root](https://dom.spec.whatwg.org/#concept-shadow-root), or _element's_ [shadow root](https://dom.spec.whatwg.org/#concept-shadow-root)'s [reference target](https://dom.spec.whatwg.org/#shadowroot-reference-target) is null, return _element_.
>
> 2. Let _referenceTargetValue_ be the value of _element's_ [shadow root](https://dom.spec.whatwg.org/#concept-shadow-root)'s [reference target](https://dom.spec.whatwg.org/#shadowroot-reference-target).
>
> 3. Let _candidate_ be the first element in _element_'s [shadow root](https://dom.spec.whatwg.org/#concept-shadow-root) whose [ID](https://dom.spec.whatwg.org/#concept-id) matches _referenceTargetValue_.
>
> 4. If no such element exists, return null.
>
> 5. Return the result of [resolving the reference target](https://whatpr.org/html/10995/common-microsyntaxes.html#resolve-the-reference-target) on _candidate_.
meaning that if the reference target is invalid, the getter would return null, even if the attr-associated element not taking reference target into account was non-null.
However, after the discussion in https://github.com/whatwg/html/issues/11577, particularly around validation, I'm wondering whether it might make sense to have a shallower algorithm for the IDL attribute getters, essentially equivalent to the current algorithm.
--
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1114
You are receiving this because you are subscribed to this thread.
Message ID: <WICG/webcomponents/issues/1114@github.com>
Received on Thursday, 2 October 2025 09:21:58 UTC