//该函数通过创建 *.DomDocument 是否成功来判断 IE支持的 ActiveXObject 类型
function getDomDocumentPrefix() {
if (getDomDocumentPrefix.prefix)
return getDomDocumentPrefix.prefix;
//这里是定义了四种 ActiveXObject 对象前缀
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o;
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
o = new ActiveXObject(prefixes[i] + ".DomDocument");
return getDomDocumentPrefix.prefix = prefixes[i];
}
catch (ex) {};
}
throw new Error("Could not find an installed XML parser");
}
//同上面的函数 通过创建 *.XmlHttp 是否成功来判断 IE支持的 ActiveXObject 类型,如果不成功就抛出错误信息 可以通过IE的左下角错误信息查看
function getXmlHttpPrefix() {
if (getXmlHttpPrefix.prefix)
return getXmlHttpPrefix.prefix;
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o;
for (var i = 0; i < prefixes.length; i++) {
try {
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
return getXmlHttpPrefix.prefix = prefixes[i];
}
catch (ex) {};
}
throw new Error("Could not find an installed XMLHttp object");
}
function XmlHttp() {}
//该函数 创建了 XmlHttp 对象
XmlHttp.create = function () {
try {
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
//添加 load事件的处理函数,
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onreadystatechange == "function")
req.onreadystatechange();
}, false);
}
return req;
}
if (window.ActiveXObject) {
return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
}
}
catch (ex) {}
//如果你的浏览器不支持 XmlHttp 对象 会在浏览器的左下角报一个错误
throw new Error("Your browser does not support XmlHttp objects");
};
//函数也可以一个对象 XmlDocument 对象主要作用是将字符串解释为XML的Document的对象,我们在用buffalo.js时候
//其实都是通过了buffalo.jar包转化为了XML的字符串形式,并且返回的已经被转化为对象了,这个可以稍微了解下
//我一般很少用到这个地方
function XmlDocument() {}
XmlDocument.create = function () {
try {
if (document.implementation && document.implementation.createDocument)