dom icon indicating copy to clipboard operation
dom copied to clipboard

[proposal] Node.containingShadowRoot

Open emilio opened this issue 5 years ago • 4 comments

I think this would be useful for authors that want to write Shadow-DOM aware code.

All browser engines have a way to get a hand to the subtree root and check if it's a shadow root in one way or another.

Gecko: https://searchfox.org/mozilla-central/rev/2e355fa82aaa87e8424a9927c8136be184eeb6c7/dom/base/nsINode.cpp#699

WebKit: https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/Node.cpp?rev=+254087#L1127

Chromium: https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/dom/node.cc;l=1815;drc=95e78e2d51fce9616e316073be6b2b92189e21ee

How do folks feel about this? Maybe it should just be in Element and Text or something...

cc @whatwg/components

emilio avatar Jan 31 '20 02:01 emilio

@emilio can you provide more details and use-cases for this? Just curious how is this different from accessing the root node? what should be the behavior when the element is disconnected, etc?

caridy avatar Jan 31 '20 03:01 caridy

It would not different to accessing the root node, but it can be O(1) rather that going through all the parents.

I just got a case where I wanted to check the activeElement of the containing tree, so (element.containingShadowRoot || document).activeElement.

emilio avatar Jan 31 '20 09:01 emilio

I guess getRootNode() would also work, kinda. You wouldn't have the "is a shadow root" check built-in but that seems acceptable.

emilio avatar Feb 01 '20 21:02 emilio

If we wanted to we could add some kind of filtering to that method via a dictionary member, but not sure if it’s worth the trouble. Depends a bit on how often it comes up I suppose.

annevk avatar Feb 03 '20 08:02 annevk