- From: Tyler Wilcock <notifications@github.com>
- Date: Tue, 24 Nov 2020 22:01:11 -0800
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/930@github.com>
https://dom.spec.whatwg.org/#concept-node-adopt Step 3 of the `adoptNode` algorithm states: > If `node` is a `DocumentFragment` node whose `host` is non-null, then return. I'm assuming this means return nothing, where the other cases are either throwing a `DOMException` or returning a `Node`. However, this is contrary to the [Document interface IDL](https://dom.spec.whatwg.org/#interface-document), which is: `[CEReactions] Node adoptNode(Node node);` instead of: `[CEReactions] Node? adoptNode(Node node);` --- Given this: ```html <html> <body> <script> const createTemplateElement = (doc) => { let template = doc.createElement('template') let p = doc.createElement('p') p.appendChild(doc.createTextNode('hello')) template.appendChild(p) return template } let newDoc = document.implementation.createHTMLDocument() newDoc.body.appendChild(createTemplateElement(newDoc)) let template = newDoc.getElementsByTagName('template')[0] // `template.content` is a `DocumentFragment` with a non-null host (the host is the <template>) // <template> creation steps from https://html.spec.whatwg.org/multipage/scripting.html#the-template-element: // 1. Let doc be the template element's node document's appropriate template contents owner document. // 2. Create a DocumentFragment object whose node document is doc and host is the template element. // 3. Set the template element's template contents to the newly created DocumentFragment object. console.log(document.adoptNode(template.content)) </script> </body> </html> ``` Firefox, Chromium, and Safari all returned the `DocumentFragment` from `adoptNode`. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/dom/issues/930
Received on Wednesday, 25 November 2020 06:01:24 UTC