dom: implement element.*Attribute

This commit is contained in:
Pierre Tachoire
2023-12-01 15:36:56 +01:00
parent 5ef08df052
commit 98c4f506b7
12 changed files with 1167 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Element.prototype.removeAttribute</title>
<link rel=help href="https://dom.spec.whatwg.org/#dom-element-removeattribute">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
"use strict";
test(() => {
const el = document.createElement("p");
el.setAttribute("x", "first");
el.setAttributeNS("foo", "x", "second");
assert_equals(el.attributes.length, 2);
assert_equals(el.getAttribute("x"), "first");
assert_equals(el.getAttributeNS(null, "x"), "first");
assert_equals(el.getAttributeNS("foo", "x"), "second");
// removeAttribute removes the first attribute with name "x" that
// we set on the element, irrespective of namespace.
el.removeAttribute("x");
// The only attribute remaining should be the second one.
assert_equals(el.getAttribute("x"), "second");
assert_equals(el.getAttributeNS(null, "x"), null);
assert_equals(el.getAttributeNS("foo", "x"), "second");
assert_equals(el.attributes.length, 1, "one attribute");
}, "removeAttribute should remove the first attribute, irrespective of namespace, when the first attribute is " +
"not in a namespace");
test(() => {
const el = document.createElement("p");
el.setAttributeNS("foo", "x", "first");
el.setAttributeNS("foo2", "x", "second");
assert_equals(el.attributes.length, 2);
assert_equals(el.getAttribute("x"), "first");
assert_equals(el.getAttributeNS("foo", "x"), "first");
assert_equals(el.getAttributeNS("foo2", "x"), "second");
// removeAttribute removes the first attribute with name "x" that
// we set on the element, irrespective of namespace.
el.removeAttribute("x");
// The only attribute remaining should be the second one.
assert_equals(el.getAttribute("x"), "second");
assert_equals(el.getAttributeNS("foo", "x"), null);
assert_equals(el.getAttributeNS("foo2", "x"), "second");
assert_equals(el.attributes.length, 1, "one attribute");
}, "removeAttribute should remove the first attribute, irrespective of namespace, when the first attribute is " +
"in a namespace");
</script>