我记得大约四五年前使用过这个代码吗?当这项技术刚被开发出来并且仍在争论中(有人记得不要禁用后退按钮的说法吗?),它仍然得到了一些零散的支持。这将在 Firefox 1/2 左右。如果我记得,这起源于一个 MS Outlook 库,用于使 Outlook 客户端响应更快,最终该技术渗透到浏览器中。
话虽如此,最后两行是遗留的;所有现代浏览器都支持并且确实支持 plain XMLHttpRequest
,最后两个无论如何仅适用于 IE。以后可能会缩短到HTTP
or AsyncRequest
or什么的,但事实是,除非你需要支持IE6,否则你真的只需要第一行。
以机智:
要支持 Internet Explorer 7 之前的 Windows Internet Explorer 版本,请使用以下函数获取 XMLHttpRequest 对象。
function getXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex) {
return null;
}
}
}
http://msdn.microsoft.com/en-us/library/ie/ms535874%28v=vs.85%29.aspx
所以,你真的不再需要它了。正如 Truth 所说,随着时间的推移,像 jQuery、Angular 和它们的同类库将把它纳入背景。但是直接访问它也不是问题。
还值得链接到MSDN 的 About Native XMLHTTP,由 RobW 在问题下的评论提供。其要点是组策略或个别 IE 策略可能会禁用 native XMLHttpRequest
,因此启用它作为一种解决方法可能仍然有用ActiveX
,尽管(至少在这一点上)禁用它似乎有点蜡笔锡纸,同时允许更多“有问题的”ActiveX
子系统。对此的一个可能解释是带宽、并发连接或其他一些网络级别的问题。奇怪的。