我正在对这个非常古老的 Web 应用程序进行现代化改造以在现代浏览器上运行,但我遇到了 IE 10 的问题。最终我不得不将 XML 文档转换为字符串:
function xmlToString(xmlElement)
{
if (document.evaluate)
{
var serializer = new XMLSerializer()
var strXml = serializer.serializeToString(xmlElement)
}
else
var strXml = xmlElement.xml
}
第一个 if 块用于 Firefox 和 Chrome;效果很好。else 之后的行用于 Internet Explorer。它适用于 8 和 9 但不是 10(它必须适用于所有 3)。从我收集到的信息来看,这是因为 IE 10 从以前的微软处理 xml 的方式转向更接近标准的方式。但是,我还没有找到 IE 10 中 .xml 属性的替代品?
有谁知道如何在 IE 10 中将 XML 文档转换为字符串?
谢谢。
编辑:所以这里问题的实际原因是在 IE 10 中 xmlElement.xml 的值是未定义的。此外,它没有将 xml 文档转换为字符串;该属性已经是 xml 文档的字符串表示形式。不过,仍然需要弄清楚如何在 IE 10 中执行此操作。
编辑2:所以我想出了答案,但显然我几个小时都不允许实际回答我自己的问题,所以我现在就在这里复制它:
AA当然,在我发布这篇文章大约 5 分钟后,我终于找到了要问 Google 的正确问题……-_-
无论如何,事实证明 IE 9 及更高版本支持 XMLSerializer,因此需要弄清楚如何在不影响任何必要浏览器的情况下检测该功能。这个页面向我展示了一种很棒的检测 javascript 功能的方法,它让一切正常。
这是最终代码,它适用于 IE 8 和 10 以及最新的 Chrome 和 Firefox:
function xmlToString(xmlElement)
{
if (typeof XMLSerializer == 'function')
{
var serializer = new XMLSerializer()
var strXml = serializer.serializeToString(xmlElement)
}
else
var strXml = xmlElement.xml
}
最后一行仍然必须在那里才能在 IE 8 上运行