diff --git a/cjs/svg/element.js b/cjs/svg/element.js index f68bff70..15220650 100644 --- a/cjs/svg/element.js +++ b/cjs/svg/element.js @@ -41,6 +41,11 @@ class SVGElement extends Element { return 'http://www.w3.org/2000/svg'; } + // https://dom.spec.whatwg.org/#element-html-uppercased-qualified-name + // only elements in the HTML namespace are upper-cased in an HTML document + get nodeName() { return this.localName; } + get tagName() { return this.localName; } + getAttribute(name) { return name === 'class' ? [...this.classList].join(' ') : diff --git a/esm/svg/element.js b/esm/svg/element.js index 84d54a6d..8c93fb1f 100644 --- a/esm/svg/element.js +++ b/esm/svg/element.js @@ -40,6 +40,11 @@ export class SVGElement extends Element { return 'http://www.w3.org/2000/svg'; } + // https://dom.spec.whatwg.org/#element-html-uppercased-qualified-name + // only elements in the HTML namespace are upper-cased in an HTML document + get nodeName() { return this.localName; } + get tagName() { return this.localName; } + getAttribute(name) { return name === 'class' ? [...this.classList].join(' ') : diff --git a/test/svg/element.js b/test/svg/element.js index 4f5259ca..e7350386 100644 --- a/test/svg/element.js +++ b/test/svg/element.js @@ -32,6 +32,14 @@ document = (new DOMParser).parseFromString(` tagName keeps its case in an HTML document'); +assert(document.querySelector('svg rect').tagName, 'rect', ' tagName keeps its case in an HTML document'); +assert(document.querySelector('svg rect').nodeName, 'rect', ' nodeName keeps its case in an HTML document'); +assert(document.createElementNS('http://www.w3.org/2000/svg', 'path').tagName, 'path', 'createElementNS tagName keeps its case'); +assert(document.createElementNS('http://www.w3.org/2000/svg', 'path').nodeName, 'path', 'createElementNS nodeName keeps its case'); +assert(document.documentElement.tagName, 'HTML', 'HTML elements are still upper-cased'); + svg.className.what = 'ever'; assert(svg.className.what, 'ever', '.className');