为什么我们使用typeof XMLHttpRequest !="undefined"
?
什么是未定义我不明白那里有什么未定义的?
if (typeof XMLHttpRequest != "undefined")
{
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
答案 0 :(得分:3)
这些检查适用于非常旧版本的Internet Explorer(IE6及更低版本)。
有多种方法可以检测浏览器是否支持XMLHttpRequest
。使用typeof SomeObject
只是其中一种方式。你可能也会看到......
if ("XMLHttpRequest" in window) { ... }
或直接
if (window.XMLHttpRequest) { ... }
答案 1 :(得分:2)
首先,除非您有一些非常奇怪的要求支持IE6,否则请删除此代码。它不再需要了。
只是检查是否在浏览器中定义了符号XMLHttpRequest
,以此作为查看此浏览器是否本机支持Ajax调用的方法。
如果没有,它将回归专有的Microsoft实施。如果定义了xmlHttpRequest
,则typeof XMLHttpRequest
的值为“function”,而不是“undefined”。
举个例子:
var x = 3;
console.log(typeof x); // "number"
console.log(typeof y); // "undefined"
// And, in any modern browser
console.log(typeof XMLHttpRequest); // "function"
// In IE6
console.log(typeof XMLHttpRequest); // "undefined"
对XMLHttpRequest
存在的此类检查适用于非常旧的Microsoft浏览器(IE6及更早版本),不再需要,可以安全删除。