【发布时间】:2017-05-04 19:40:30
【问题描述】:
在链接到 XHTML 页面的 JS 中,我使用 createElementNS 创建新元素,如下所示:
const NS = 'http://my.site/xmlns';
const el1 = document.createElementNS(NS, 'custom');
const el2 = document.createElementNS(NS, 'p:custom');
我不明白在第二个参数中使用命名空间前缀创建的元素与没有它创建的元素之间有什么区别。例如,这些 CSS 规则对 both 元素具有相同的效果:
@namespace p url('http://my.site/xmlns');
p|custom { background: yellow; }
接下来,调用document.getElementsByTagNameNS(NS, 'custom') 返回一个带有两个 元素的HtmlCollection,而document.getElementsByTagNameNS(NS, 'p:custom') 返回一个空的HtmlCollection,这对我来说似乎很奇怪。
那么创建带有命名空间前缀和不使用命名空间前缀的元素有什么区别?
【问题讨论】:
标签: javascript dom xhtml xml-namespaces