兼容IE10 chrome的读取xml步骤总结
兼容IE10 chrome的读取xml方法总结
首先判断是不是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");依次类推