| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Attributes are Nodes but should not be accepted outside of the `attributes` NamedNodeMap</title> |
| <link rel=help href="https://dom.spec.whatwg.org/#dom-core-changes"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script> |
| "use strict"; |
| |
| test(() => { |
| |
| const attribute = document.createAttribute("newattribute"); |
| |
| assert_true(attribute instanceof Node, "attribute instances are instances of Node"); |
| assert_true(Attr.prototype instanceof Node, "attribute instances are instances of Node"); |
| |
| }, "Attrs are subclasses of Nodes"); |
| |
| test(() => { |
| |
| const parent = document.createElement("p"); |
| |
| const attribute = document.createAttribute("newattribute"); |
| assert_throws_dom("HierarchyRequestError", () => { |
| parent.appendChild(attribute); |
| }); |
| |
| }, "appendChild with an attribute as the child should fail"); |
| |
| test(() => { |
| |
| const parent = document.createElement("p"); |
| parent.appendChild(document.createElement("span")); |
| |
| const attribute = document.createAttribute("newattribute"); |
| assert_throws_dom("HierarchyRequestError", () => { |
| parent.replaceChild(attribute, parent.firstChild); |
| }); |
| |
| }, "replaceChild with an attribute as the child should fail"); |
| |
| test(() => { |
| |
| const parent = document.createElement("p"); |
| parent.appendChild(document.createElement("span")); |
| |
| const attribute = document.createAttribute("newattribute"); |
| assert_throws_dom("HierarchyRequestError", () => { |
| parent.insertBefore(attribute, parent.firstChild); |
| }); |
| |
| }, "insertBefore with an attribute as the child should fail"); |
| |
| </script> |