Javascript IE9导入内嵌SVG<;图像>;元素破碎

Javascript IE9导入内嵌SVG<;图像>;元素破碎,javascript,svg,internet-explorer-9,Javascript,Svg,Internet Explorer 9,我正在使用将SVG文档导入页面,效果很好,但在IE9中,标记在导入后都不起作用(它们显示为损坏的图像,即使它们的xlink:href属性正确)。为什么会发生这种情况,有什么办法可以解决吗?这里有一个简单的例子。它在Chrome、FF等中运行良好,但在IE9中不起作用。显然,如果我删除xlink:并只使用href,如果修复了IE9中的问题,但在Chrome中破坏了它,等等。奇怪!如果有人知道原因,我很乐意接受你的回答。看 添加href,除了xlink:href解决了所有问题。中提供的importN

我正在使用将SVG文档导入页面,效果很好,但在IE9中,
标记在导入后都不起作用(它们显示为损坏的图像,即使它们的
xlink:href
属性正确)。为什么会发生这种情况,有什么办法可以解决吗?这里有一个简单的例子。它在Chrome、FF等中运行良好,但在IE9中不起作用。

显然,如果我删除
xlink:
并只使用
href
,如果修复了IE9中的问题,但在Chrome中破坏了它,等等。奇怪!如果有人知道原因,我很乐意接受你的回答。看


添加
href
除了
xlink:href
解决了所有问题。中提供的
importNode
的js实现没有正确设置命名空间属性,它应该使用
setAttributeNS
来正确设置
xlink:href
。这似乎可以解决这个问题,你试过使用这个吗?

我确实试过,但它在
clone.setAttributeNS(a.namespaceURI,a.nodeName,a.nodeValue)行上给出了
SCRIPT5022:DOM异常:NAMESPACE\u ERR(14)
。我猜这是关于xmlns:xlink属性的?或者对于任何带前缀的属性都是这样吗?似乎所有带前缀的属性都是这样。进一步检查后,对于以下属性,它似乎只在实际的
元素上抛出该错误:
xmlns=”http://www.w3.org/2000/svg“
xmlns:xlink=”http://www.w3.org/1999/xlink“
。如果我用try…catch块(对catch不做任何操作)来包装这一行,它似乎可以导入文档。我接受你的答案,因为我认为你是正确的。不过,我仍然不明白为什么这些属性会导致名称空间错误。感谢您添加了真正的修复!这对我也有用<代码>