我试图在网页内呈现SVG文档,然后通过
JavaScript捕获该SVG文档的标记.然后将此SVG标记发送回服务器进行处理.
我的SVG文档的根目录类似于以下内容:
<svg id="layout" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:foobar="http://www.foobar.com" foobar:attribute="123abc">
这在Webkit和Firefox中运行得非常好,但是Internet Explorer(像往常一样)会导致问题.当SVG在IE中呈现时,它看起来很好,但是当我通过JavaScript / jQuery(XMLSerializer)获得它的标记时,SVG字符串根节点现在看起来像这样:
<svg xmlns="http://www.w3.org/2000/svg" id="layout" xmlns:NS1="" NS1:foobar:attribute="123abc" xmlns:NS2="" NS2:xmlns:foobar="http://www.foobar.com">
SVG正确显示,但正如您所看到的,当序列化XML时,命名空间被搞砸了(并且属性已经重新排列,但这并不是真正的问题).这些混乱的命名空间会破坏处理提交的SVG字符串的服务器端代码.有人能够了解正在发生的事情吗?
我已经做了一个下午的谷歌搜索,似乎无法提出很多.我见过的所有例子都是人们试图通过JavaScript / jQuery添加命名空间并获得类似的结果(命名空间)到我所看到的情况.
希望有人在MSDN上知道发生了什么,我也开了a thread there.
编辑:添加了一些细节
编辑2:添加了MSDN线程的链接
最佳答案 我几乎建议在使用SVG时避免使用JQuery.您一直遇到名称空间问题.
相反,尝试类似的东西
(new XMLSerializer()).serializeToString(document.querySelector("svg"))