兼容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"); 
依次类推