日期:2014-05-16  浏览次数:20617 次

ActiveXObject( "Microsoft.XMLHTTP ")
今天在弄JS
看了下ActiveXObject( "Microsoft.XMLHTTP ")这个感觉不懂.

 
JScript code
 if (window.XMLHttpRequest) { 

                     req = new XMLHttpRequest(); 

                }else if (window.ActiveXObject) { 

                      req = new ActiveXObject("Microsoft.XMLHTTP"); 

               } 

为了用JavaScript向服务器发送一个HTTP请求, 需要一个具备这种功能的类实例. 这样的类首先由Internet Explorer以ActiveX对象引入, 被称为XMLHTTP. 后来Mozilla, Safari 和其他浏览器纷纷仿效, 提供了XMLHttpRequest类,它支持微软的ActiveX对象所提供的方法和属性. 
  因此, 为了创建一个跨浏览器的这样的类实例(对象), 可以应用第05—09行的代码.

其中,
http_request = new XMLHttpRequest();
为 Mozilla, Safari, ...浏览器所设,
而,
  http_request = new ActiveXObject("Microsoft.XMLHTTP");
  为 IE所设
ActiveXObject其实就是以一个字符串为参数的函数。我写了一个对象由于没有加引号调用,结果就是报没有这个对象。搞了好久。现在想想,作为参数就是字符串,数字,内存地址和集合(包括数组,对象等等)几类。作为脚本语言的一个顶层函数可以识别的也就字符串和数字了。对象需要知道是什么对象,它哪里知道。


new ActiveXObject("Microsoft.XMLHTTP");
默认版本的XMLHTTP,XMLHTTP主要用来传输数据。

new ActiveXObject("MSXML2.ServerXMLHTTP");
SERVER XMLHTTP,是从XMLHTTP派生的,详细区别,查找MSXML SDK里ServerXMLHTTP,上面有说明。

new ActiveXObject('MSXML');
这个用法好象没有,好象也不会有这样调用插件的。

看玩了感觉
感觉有点懂,有不是很懂.拿出来
大家如果有更好的解释
发表下自己的高见

------解决方案--------------------
纯接分.
------解决方案--------------------
有必要搞得那么清楚吗,明白什么代码起封装兼容哪类浏览器的功能,生成相应的XMLHTTP对象就足够了.
像JQUERY这类的都是封装好的,你连考虑这些都不要考虑.
------解决方案--------------------
就是返回一个JS对象, 这个对象可以异步发送或请求相关文件

根据浏览器不同,可能创建的方式不同,但都能实现类似的功能