diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 8a47652f74f..9ffb17c3254 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -223,7 +223,7 @@ impl Element { "style" => { self.style_attribute = Some(style::parse_style_attribute(value)) } - "id" => { + "id" if abstract_self.is_in_doc() => { // XXX: this dual declaration are workaround to avoid the compile error: // "borrowed value does not live long enough" let doc = self.node.owner_doc(); @@ -287,7 +287,7 @@ impl Element { "style" => { self.style_attribute = None } - "id" => { + "id" if abstract_self.is_in_doc() => { // XXX: this dual declaration are workaround to avoid the compile error: // "borrowed value does not live long enough" let doc = self.node.owner_doc(); diff --git a/src/test/html/content/test_document_getElementById.html b/src/test/html/content/test_document_getElementById.html index dcb1d5bb08c..ffdca48e8af 100644 --- a/src/test/html/content/test_document_getElementById.html +++ b/src/test/html/content/test_document_getElementById.html @@ -66,6 +66,15 @@ is(e2, null, "test3-2, the method should return null when the passed id is none in document."); } + { + // Ensure that the id attribute only affects elements present in a document + let e = document.createElement('div'); + e.id = "should-not-exist"; + is(document.getElementById("should-not-exist"), null); + document.body.appendChild(e); + is(document.getElementById("should-not-exist"), e); + } + // TODO: // test4: "in tree order, within the context object's tree" // http://dom.spec.whatwg.org/#dom-document-getelementbyid.