假设您在JavaScript中获得了单个DOM元素或文档(例如window.document),那么如何将其转换为有效的XML?
更具体地说,在我的示例中,我有一个显示SVG的网页,该SVG具有很多JavaScript以允许进行交互.这是一个图形显示,可让您放大图形甚至进行一些转换.现在,用户可以使用“保存图像”按钮.我想象的方式是将SVG元素的文档节点转换为XML,然后将其发送到服务器,服务器再返回包含SVG文档或PNG图像的页面.
这一切都在FireFox上运行(尽管Safari和Chrome也可以正常运行,但目前对用户是必需的).在网页的firefox中,我将SVG文档作为Object元素包含在内.在javascript中,我可以访问该对象contentDocument,该对象引用XML页面的根目录.它包含XML版本,Document标签和带有所有属性的svg根标签.
也许有人已经解决了这个问题,所以我可以复制他们的代码.也许有人知道在Firebug中寻找实现此目标的位置.或者,也许已经有DOM方法了.
解决方法:
有一个非标准的API对象:XMLSerializer(尽管除IE浏览器外,所有对象均实现了非标准的API对象).
它的serializeToString方法期望传递DOMNode对象.
var sXML = new XMLSerializer().serializeToString(document.body);
在Internet Explorer中,除非获取.outerHTML并解决与序列化到HTML一起解决的所有问题(例如,属性中缺少引号,未关闭的标记等),否则无法为HTML检索正确的XML.
标签:dom,svg,javascript
来源: https://codeday.me/bug/20191024/1921128.html