什么是html + javascript中的属性命名空间? (setAttributeNS)

时间:2012-10-31 12:24:00

标签: javascript html dom

我们中的许多非jquery javaScript开发人员一直在使用domElement.setAttribute及其姐妹函数来破解无数dom元素,为所有互联网永恒。

是它,css,dom classNames,存储/检索可变数据等等......

var b = document.getElementById("someDiv"); 
b.setAttribute("align", "center");

那么domElement.setAttributeNS变种的目的/实际用途是什么?此问题与Web浏览器显示/使用有关。而不是在XML的上下文中。其中setAttributeNS有很多用途。

var d = document.getElementById("someDiv"); 
d.setAttributeNS("http://www.mozilla.org/ns/specialspace", "align", "center");

2 个答案:

答案 0 :(得分:2)

那是domElement而非htmlElement

当您使用从XML构造的DOM时,它非常有用,它使用来自多个名称空间的元素。

(如果你想知道为什么名称空间有用,那么see this question

答案 1 :(得分:2)

在HTML文档中(即text/html解析器创建的文档对象)setAttributeNS的用途确实不多。

但是如果看一下HTML5解析器在解析外来内容时需要做什么(例如SVG abd MathML),我们会找到this table: adjust foreign attributes

因此它会自动移动并将一些属性重命名为XLink,XML和XMLNS名称空间。当您通过setAttribute和setAttributeNS等函数操作DOM时,不会发生自动移动和重命名,因此要将属性放入正确的命名空间,您需要使用setAttributeNS来创建和修改它们。

xlink:href可能是通过setAttributeNS()

设置的最常见的