function readXml(path , handler) {
var dom ;
var ajax = false;
if(window.ActiveXObject) {
dom = new ActiveXObject("Microsoft.XMLDOM");
} else {
var useragent = navigator.userAgent.toLowerCase();
if(/mozilla/.test(useragent) && !/(?:compatible|webkit)/.test(useragent)) {
dom = document.implementation.createDocument('' , '' , null);
} else {
dom = new XMLHttpRequest();
ajax = true;
}
}
if(ajax) {
dom.onreadystatechange = function() {
if(dom.readyState == 4 && dom.status == 200) {
handler(dom.responseXML.documentElement);
}
};
dom.open('GET' , path , true);
dom.send(null);
} else {
dom.async = true;
if(window.ActiveXObject) {
dom.onreadystatechange = function() {
if(dom.readyState == 4) {
handler(dom.documentElement);
}
};
} else {
dom.onload = function() {
handler(dom.documentElement);
};
}
dom.load(path);
}
};
说明:本身读取xml的api在opera,safari,chrome上不支持异步读取,对于这三种浏览器采用的是ajax的get方式,ajax支持异步读取。而ie和firefox使用本身读取xml的api,本身就支持异步读取
本文介绍了一种JavaScript实现的跨浏览器异步读取XML文件的方法。针对不同浏览器的API支持情况,该方法采取了灵活的策略:对于Opera、Safari和Chrome等不支持异步读取XML的浏览器,采用AJAX GET请求;而对于IE和Firefox,则利用它们内置的XML读取API。
908

被折叠的 条评论
为什么被折叠?



