IE10 javascript访问xml元素问题

时间:2012-12-14 00:47:37

标签: javascript html xml internet-explorer-10

我有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中作为上述注释写入。

感谢任何帮助,谢谢!

1 个答案:

答案 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);