I did think about doing something like that, but it's actually not so
trivial, because `ownerGlobal` is a property on `EventTarget`, even
though we're only changing the behavior of `Node` here.
Also, there are some use cases for `ownerGlobal`, too, I believe. For
example, creating derived objects like events to dispatch generally
should use it:
node.dispatchEvent(new node.ownerGlobal.CustomEvent(...));
The other issue is that I don't want EventTarget.ownerGlobal to be
subtly different for bindings than in C++ internally, and C++ callers
generally want the new ownerGlobal behavior more often than the old one.
I do understand that for the front-end, having a convenient way
of getting to the global that the node is in (ownerDocGlobal, currently)
is super handy and what 95+% of the code would want, tho...
If the non-Node EventTarget.ownerGlobal usage for bindings is minimal,
wdyt about renaming it from the bindings to something different / more
obviously not-what-you-usually want (or removing it even, perhaps)?
Thanks,
--Emilio
On 4/17/26 2:09 PM, Dave Townsend wrote:
> Hi Emilio. I'm concerned that this change in behaviour will cause subtle
> bugs in existing or future code we write. In my mind and I'm sure in the
> minds of many developers, `ownerGlobal` means the window the element is
> in and that will be a hard perception to shift. Because it will now mean
> something different only in rare cases we are likely to use the wrong
> thing without noticing. Additionally the naming of `ownerGlobal` and
> `ownerDocGlobal` makes it very unclear that they mean different things.
>
> Since `ownerGlobal` is not part of the web spec can we keep the same
> behaviour for `ownerGlobal` and introduce a new property for the node's
> original window?
>
> On Thu, 16 Apr 2026 at 23:22, 'Emilio Cobos Álvarez' via firefox-
>
d...@mozilla.org <mailto:
firef...@mozilla.org> <firefox-
> Once I get bug 1470017 <
https://bugzil.la/1470017> to stick, the
> `EventTarget.ownerGlobal` property on nodes will change behavior
> slightly.
>
> This will allow fixing long-standing web components issues
> (prototypes getting lost on adopt) and some other subtler webcompat
> issues, like bug 2022763 <
https://bugzil.la/2022763>.
>
> In most cases it should be fine to keep using it in the front-end,
> but there are two subtle behavior changes that might need code to be
> adjusted:
>
> * If you're dealing with nodes that might have been adopted,
> `ownerGlobal` might point to the original window of the node,
> not the one that's currently in.
> * .ownerGlobal might also now return non-null a bit more often
> (after the docshell is gone).
>
> If you need the old behavior, you can use the new
> `Node.ownerDocGlobal` property. I don't expect much fallout, and I
> want to proactively change some more code to use `ownerDocGlobal`
> (e.g. child actors almost always want to look at the window the node
> is in), but I thought it might be worth a PSA, reach out if you see
> issues that might be caused by it on the chrome.
>
> Let me know if there are any questions.
>
> Thanks,
> -- Emilio
>
> --
> You received this message because you are subscribed to the Google
> Groups "
firef...@mozilla.org <mailto:
firef...@mozilla.org>" group.
> <mailto:
firefox-dev...@mozilla.org>.
> QMRqFPYVyK1v3p67ViNaeLRr1emN%3DaXJRs7jBg%
40mail.gmail.com <https://
>
groups.google.com/a/mozilla.org/d/msgid/firefox-dev/CAFhp-qcR_%3Dc-
> QMRqFPYVyK1v3p67ViNaeLRr1emN%3DaXJRs7jBg%
40mail.gmail.com?
> utm_medium=email&utm_source=footer>.
>