通过XHR获取SVG文档后,xhr.responseXML属性中将有一个单独的XML文档.由于您无法合法地将节点从一个文档移动到另一个文档,因此您需要将所需的部分从一个文档导入到目标文档中,然后才能将其用作该文档的一部分.
var clone = document.importNode(nodeFromAnotherDoc,true);
// Now you can insert "clone" into your document
但是,this does not work for IE9.要解决该错误,您可以使用此函数以递归方式重新创建所选文档中的节点层次结构:
function cloneToDoc(node,doc){
if (!doc) doc=document;
var clone = doc.createElementNS(node.namespaceURI,node.nodeName);
for (var i=0,len=node.attributes.length;i
var a = node.attributes[i];
clone.setAttributeNS(a.namespaceURI,a.nodeName,a.nodeValue);
}
for (var i=0,len=node.childNodes.length;i
var c = node.childNodes[i];
clone.insertBefore(
c.nodeType==1 ? cloneToDoc(c,doc) : doc.createTextNode(c.nodeValue),
null
);
}
return clone;
}