解释XMLHttpRequest创建

tem*_*ame 10 xmlhttprequest

我正在从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)

neu*_*rah 4

是的,我同意 harschware 的观点,拥有一些跨浏览器工具会有所帮助,因为这是一个复杂的领域。

上面的代码是创建对象的跨浏览器代码片段XMLHTTPRequest

它结构良好,因为它依赖于功能检查而不是浏览器检查。请参阅这篇文章“功能检测而不是浏览器检测”,网址为: http://www.javascripttoolbox.com/bestpractices/

所以这:

if (window.XMLHttpRequest)
Run Code Online (Sandbox Code Playgroud)

--检测浏览器是否具有作为全局函数(window 对象的成员)实现的 XMLHttpRequest 功能,如果是,则以这种方式构造 XMLHttpRequest 对象。

否则,代码会盲目地假设它可以通过调用 ActiveXObject 函数来创建 XMLHttpRequest,这是在 IE5 和 IE6 中创建此类对象的方法(如上所述)。

最后一个假设可能不正确,因为浏览器甚至可能没有该功能,或者可以以不同的方式实现。最后一种情况可能会出现例外情况。

  • 大约三年后,作为一名更有经验的 JavaScript 工程师回来并清理了一些格式。回顾我所走过的学习之路很有趣。我记得从前这真是令人困惑。谢谢你当年对我的帮助。 (3认同)