JS的ActiveXObject对象[摘]

最近老是出现JS在我面前,有很多是特效或其他AJAX方面的,也在研究Prototype.js的脚本库,但对于我这种JS菜鸟来说有很多东东还不是很 懂。所以今天去看了一看教程,对于我们.NET的程序员来说,对OO编程已经没有什么新鲜的了,但对于JS中的OO编程我还不是很熟悉,所以今天就来学习 学习JS中的ActiveXObject对象,在接下来的几篇随笔中我会慢慢的把其他对象给总结出来。

  有事没事new一个,要声明ActiveXObject对象当然也不例外,它能返回一个Automation对象的引用,代码如下:

   var obj=new ActiveXObject(servername,typename[,location]);


  下面我们来看看参数说明:
   obj谁都知道是变量,即要赋值为ActiveXObject的变量名;
   servername提供该对象的应用程序名称;  
   typename要创建的对象地类型或类;
   location创建该对象得网络服务器名称。

   Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。例如要创建Excel的Application和Sheet对象,代码如下:

  var ExcelApp = new ActiveXObject("Excel.Application");
  var ExcelSheet = new ActiveXObject("Excel.Sheet")


  一旦对象被创建,就可以用定义的对象变量在代码中的引用它。下面我们将通过一个例子来看看对对象和方法的引用,通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells 集合。 代码如下:

1 ExcelSheet.Application.Visible = true;
2 ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
3 ExcelSheet.SaveAs("C:\\TEST.XLS");
4 ExcelSheet.Application.Quit();


  下面我们来看看怎样创建远程服务器中创建对象,但是这有一个前提就是要将Internet安全性关闭。要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObjectservername 参数。该名称与共享名的机器名部分相同。比如共享名为 "\\myserver\public" 的网络,servername 是 "myserver"。另外,可以用 DNS 格式或 IP 地址指定 servername。下面的代码返回在名为 "myserver" 的远程网络计算机上运行的 Excel 实例的版本号:

1 function GetAppVersion() {
2    var XLApp = new ActiveXObject("Excel.Application", "MyServer");
3    return(XLApp.Version);
4 }


  如果指定的远程服务器不存在或找不到时将会发生错误。

  以上的例子和一些说明来自于教程,由于时间问题我也没有特地去找例子或自己写写代码,因为ActiveXObject的对象相对的方法和属性都来自于各自 类的引用。我只用过XMLHttpRequest对象,其他的还有很多东东都需要我们去了解,以后也应该会写一些关于XMLHttpRequest对象, 毕竟现在的AJAX这么红火!

 补充一部分内容{使用ActiveX}   :

    下面这句话的意思是生成一个相关的Active对象,根据相关的浏览器版本  

       xmlHttp = newActiveXObject(aVersions[i]);

      这行JS代码是产生一个XMLHttpRequest对象,括号里面的是ActiveX插件的名字.

      完整的应该这样写:

      var xmlHttp;

      function createXMLHttpRequest() {

          if(window.ActiveXObject){

              var aVersions =["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];

              for(int i=0;i<aVersions.length;i++){

                 try{

                          xmlHttp = new ActiveXObject(aVersions[i]);

                          return;

                 }

                 catch(oError){

                 }

            }

        }

        else if(window.XMLHttpRequest)  {

           xmlHttp = new XMLHttpRequest();

          return;

       }

       throw new Error("XMLHttp object could not becreated.");

   }

   补充:判断的原因是,各种浏览器对JavaScript的支持不一样..所以XmlHttpRequest对象的产生方式也不一样.比如IE.他支持的是ActiveX的方式.

   ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];这些是他ActiveX的版本.

   而有些浏览器.象FireFox,浏览器本身有对XmlHttpRequest的支持.浏览器有内置对象.所以用"xmlHttp = new XMLHttpRequest(); "就可以了

   if(window.XMLHttpRequest)是判断浏览器是否内置XmlHttpRequest对象

  参考链接 :http://msdn.microsoft.com/zh-cn/library/ie/7sw4ddf8%28v=vs.94%29.aspx (来自MSDN)

 

posted @ 2014-01-15 15:25  酷乐公司  阅读(617)  评论(0编辑  收藏  举报