我有3个文件,(htm,xml,js)在IE8中很好地协同工作,但在IE10中,javascript无法获取xml元素:
getxml.htm
<html>
<head><title>getxml.htm</title></head>
<xml id="myxml" src="myxml.xml"></xml>
<script src="getxml.js" language="javascript" type="text/javascript"></script>
</html>
myxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<publish>
</publish>
getxml.js
get_xml_content();
function get_xml_content() {
alert("get_xml_content");
alert(myxml); // ie8: [object], ie10: [object HTMLUnknownElement]
var xmle=myxml.getElementsByTagName("publish").item(0);
alert(xmle); // ie8: [object], ie10: null
}
来自IE8和IE10的警报消息在getxml.js中作为上述注释写入。
感谢任何帮助,谢谢!
答案 0 :(得分:2)
根据a blog post at the IEBlog,IE10在标准模式下运行时不支持XML数据岛。这使IE10与其他浏览器解析HTML的方式一致。
要在IE10中使用此功能,您需要以传统模式加载页面。您可以通过添加X-UA-Compatible
元标记
<meta http-equiv="X-UA-Compatible" content="IE=9" />
更多跨浏览器的方法是将XML与<iframe>
链接起来:
<iframe id="myxml" src="myxml.xml" />
当然,你需要用一点CSS来隐藏它:
iframe { display: none; }
引用contentDocument
来解析文档:
var myxml = document.getElementById("myxml").contentDocument;
var xmle=myxml.getElementsByTagName("publish").item(0);
alert(xmle);