aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r--components/script/dom/element.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 006d99eb2f1..ca7effd3e09 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -3665,7 +3665,11 @@ impl VirtualMethods for Element {
}
if let Some(ref value) = *self.id_attribute.borrow() {
if let Some(ref shadow_root) = self.containing_shadow_root() {
- shadow_root.unregister_element_id(self, value.clone());
+ // Only unregister the element id if the node was disconnected from it's shadow root
+ // (as opposed to the whole shadow tree being disconnected as a whole)
+ if !self.upcast::<Node>().is_in_shadow_tree() {
+ shadow_root.unregister_element_id(self, value.clone());
+ }
} else {
doc.unregister_element_id(self, value.clone());
}