Phr*_*ogz 7 javascript xml svg namespaces
考虑这个SVG/XML和JavaScript:
<svg id="foo" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<use id="bar" xlink:href="#whee" />
</svg>
...
var foo = document.getElementById('foo');
var bar = document.getElementById('bar');
var xlnk = foo...; // What is correct here?
var link = bar.getAttributeNS(xlnk,'href');
Run Code Online (Sandbox Code Playgroud)
显然,我可以使这项工作xlnk = "http://www.w3.org/1999/xlink"
; 但是,我的问题是动态获取元素xmlns:xlink
属性的正确方法是什么svg
?
以下代码恰好在Safari/Chrome/FF中有效,但它真的有效吗?
var xlnk = foo.getAttribute('xmlns:xlink');
以下代码在这些浏览器中返回一个空字符串:
var xlnk = foo.getAttributeNS( "http://www.w3.org/2000/svg", "xlink" );
该getAttributeNS()
规范文档的第二个参数:
" 要检索的属性的本地名称."
对于XML,第3版中的每个命名空间,xmlns
前缀保留并用作PrefixedAttName
定义的一部分NSAttName
.
由于a NSAttName
没有"本地部分" - 并且QName
它似乎xmlns:xlink
不被视为命名空间+本地名称,而是属性名称本身.由于这与通常符合标准的浏览器的实验结果一致,我确信以下代码是有效且正确的:
var xlnk = foo.getAttribute('xmlns:xlink');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2577 次 |
最近记录: |