Internet Explorer XML/SVG 自定义命名空间 - 生成额外/错误的命名空间

2024-01-31

我正在尝试在网页内渲染 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 上的人知道发生了什么,我也打开了那里有一个线程 http://social.msdn.microsoft.com/Forums/ie/en-US/cad30264-e877-4593-8890-4c629bb07f02/using-xmlserializer-on-svgsvgelement-with-custom-namespaces-is-broken?forum=iewebdevelopment.

编辑:添加了一些细节

编辑 2:添加了 MSDN 线程的链接


我几乎建议在使用 SVG 时避免使用 JQuery。您总是会遇到命名空间的问题。

相反,尝试类似的东西

(new XMLSerializer()).serializeToString(document.querySelector("svg"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Internet Explorer XML/SVG 自定义命名空间 - 生成额外/错误的命名空间 的相关文章

随机推荐