首先判断是不是IE浏览器,在IE9 、10中可以用
<span style="font-size:24px;">if(window.ActiveXObject)</span>
因为IE中httprequest就是一个ActiveX控件,但是在IE11中window事件已经做了改变,得使用
<span style="font-size:24px;">if ("ActiveXObject" in window)</span>
判断是不是IE浏览器,兼容代码如下:
<span style="font-size:24px;">if ("ActiveXObject" in window) { //IE浏览器生成DOM组件
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", source, false);
xmlhttp.send(null);
return xmlhttp.responseXML;
//如下为IE下专有写法 可以用上面通用代码代替,故弃用
//xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
//xmlDoc.async = false;
//xmlDoc.load(source);
//return xmlDoc;
}
else {
var xmlhttp = new window.XMLHttpRequest();
xmlhttp.open("GET", source, false);
xmlhttp.send(null);
return xmlhttp.responseXML;</span>
经过如上处理得到的是解析成DOM文档对象的xml数据,处理后续数据还是有差别的
比如取xml的根目录root,IE中会这样写
dom.documentElement,
取得孩子节点会:
dom.documentElement.childNodes
但是在chrome中就会出错,在chrome中要取得某个节点,得使用:
dom.getElementsByTagName_r("News");
如果使用了jquery框架的话,就有通用的写法:
var root = $(xmlDoc).find("dataname");
取得root下的子节点则使用:
var childss = $(root[i]).find("mapdata");
依次类推