Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取命名空间声明属性值的正确方法_Javascript_Xml_Namespaces_Svg - Fatal编程技术网

Javascript 获取命名空间声明属性值的正确方法

Javascript 获取命名空间声明属性值的正确方法,javascript,xml,namespaces,svg,Javascript,Xml,Namespaces,Svg,考虑以下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

考虑以下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');

...
var foo=document.getElementById('foo');
var bar=document.getElementById('bar');
var xlnk=foo…;//这里什么是正确的?
var link=bar.getAttributeNS(xlnk,'href');
显然,我可以使用
xlnk=”来实现这一点http://www.w3.org/1999/xlink“
;但是,我的问题是,动态获取
svg
元素上的
xmlns:xlink
属性的正确方法是什么

以下代码碰巧在Safari/Chrome/FF中工作,但它真的有效吗?
var xlnk=foo.getAttribute('xmlns:xlink')

以下代码在这些浏览器中返回空字符串:
var xlnk=foo.getAttributeNS(“http://www.w3.org/2000/svg“,“xlink”)

规范将第二个参数记录为:

“要检索的属性的名称。”

根据
xmlns
前缀是并用作定义
NSAttName
的一部分

由于
NSAttName
没有“本地部分”,而a有,因此
xmlns:xlink
似乎不是名称空间+本地名称,而是属性名称本身。由于这与标准兼容浏览器的实验结果一致,我确信以下代码是有效和正确的:

var xlnk = foo.getAttribute('xmlns:xlink');