我正在从w3schools学习XMLHttpRequest.我不明白以下代码片段.什么window.XMLHttpRequest意味着什么?是真是假?整个if/else结构是否仅用于考虑ie6和ie5,如果是这样,它们都可以被一行读取xmlhttp = new XMLHttpRequest()吗?
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Run Code Online (Sandbox Code Playgroud)
是的,我同意 harschware 的观点,拥有一些跨浏览器工具会有所帮助,因为这是一个复杂的领域。
上面的代码是创建对象的跨浏览器代码片段XMLHTTPRequest。
它结构良好,因为它依赖于功能检查而不是浏览器检查。请参阅这篇文章“功能检测而不是浏览器检测”,网址为: http://www.javascripttoolbox.com/bestpractices/
所以这:
if (window.XMLHttpRequest)
Run Code Online (Sandbox Code Playgroud)
--检测浏览器是否具有作为全局函数(window 对象的成员)实现的 XMLHttpRequest 功能,如果是,则以这种方式构造 XMLHttpRequest 对象。
否则,代码会盲目地假设它可以通过调用 ActiveXObject 函数来创建 XMLHttpRequest,这是在 IE5 和 IE6 中创建此类对象的方法(如上所述)。
最后一个假设可能不正确,因为浏览器甚至可能没有该功能,或者可以以不同的方式实现。最后一种情况可能会出现例外情况。
| 归档时间: |
|
| 查看次数: |
14237 次 |
| 最近记录: |