【发布时间】:2016-03-20 04:40:42
【问题描述】:
var svgElem = data.childNodes[0];//gets svg element
var insertSvgTag =
"<g transform="scale(0.34) translate(75,60)">" + svgElem.outerHTML + '</g>';
var wrapper = document.createElement('div');
wrapper.innerHTML = insertSvgTag;
最后我必须将包装器附加为另一个对象的子对象。
当我看到 innerHTML 时,我得到了额外的命名空间
**xmlns:NS1=\"\" NS1:xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"**
我尝试了另一种方法:
var wrapper = document.**createElementNS**('http://www.w3.org/2000/svg', 'g');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'http://www.w3.org/2000/svg');
wrapper.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
这消除了额外的命名空间,但是当我尝试将它添加到另一个 svg 对象时,这次我在将子添加到父对象时得到了相同的额外命名空间。
这导致我的 svg 无法打开。
我搜索了很多。关注帖子:Internet Explorer XML/SVG Custom Namespacing - Extra/Wrong Namespaces Generated, 我试过: new DOMParser().parseFromString(content, 'text/xml') 它不适合我。我想我做错了什么。任何人都可以指出哪里出了问题?
@dmccabe @Thomas W
【问题讨论】:
-
SVG 组元素必须在
<svg>元素内。您不能将它们直接插入<div>。
标签: javascript jquery html svg