zoukankan      html  css  js  c++  java
  • JS入门之ActiveXObject对象(转载)

    JS入门之ActiveXObject对象
     

    此对象提供自动化对象的接口。

     
    function ActiveXObject(ProgID : String [, location : String])

    参数

    ProgID

    必选。形式为“serverName.typeName”的字符串,其中 serverName 是提供对象的应用程序的名称,typeName 是要创建的对象的类型或类。

    location

    可选项。要在其中创建对象的网络访问器的名称。

    备注

    通常,自动化服务器会提供至少一种对象。例如,字处理应用程序可能会提供应用程序对象、文档对象和工具栏对象。

    以下代码通过调用 ActiveXObject 对象构造函数来启动应用程序(在这种情况下为 Microsoft Excel 工作表)。ActiveXObject 允许您在代码中引用应用程序。使用下面的示例,您可以使用对象变量 ExcelSheet 和其他 Excel 对象(包括应用程序对象和 ActiveSheet.Cells 集合)来访问新对象的属性和方法。

     复制代码
    // Declare the variables
    var Excel, Book;
    
    // Create the Excel application object.
    Excel = new ActiveXObject("Excel.Application");
    
    // Make Excel visible.
    Excel.Visible = true;
    
    // Create a new work book.
    Book = Excel.Workbooks.Add()
    
    // Place some text in the first cell of the sheet.
    Book.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
    
    // Save the sheet.
    Book.SaveAs("C://TEST.XLS");
    
    // Close Excel with the Quit method on the Application object.
    Excel.Application.Quit();

    若要在远程服务器上创建对象,只能在关闭 Internet 安全机制时完成。您可以通过将计算机的名称传递到ActiveXObject 的 servername 参数在远程网络计算机上创建对象。该名称与共享名的计算机名部分相同。对于名为“//MyServer/public”的网络共享,servername 为“MyServer”。此外,您可以使用 DNS 格式或 IP 地址来指定servername

    以下代码返回在名为“MyServer”的远程网络计算机上运行的 Excel 实例的版本号:

     CopyCode image复制代码
    function GetAppVersion() {
       var Excel = new ActiveXObject("Excel.Application", "MyServer");
       return(Excel.Version);
    }

    如果指定的远程服务器不存在或者找不到,则会出错。

    属性和方法

    ActiveXObject 对象不具有任何内部属性或方法;它允许您访问自动化对象的属性和方法。

     
     
    2008-02-27 18:31
    最近老是出现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安全性关闭。要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObject 的 servername 参数。该名称与共享名的机器名部分相同。比如共享名为 "//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 }

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

    5.2.6 在客户端上创建对象实例 
    在ASP中讨论在服务器上实例化对象和组件的技术时,值得强调的是在浏览器中运行客户端页面而完成同样工作的方式。如果你使用ASP创建包含客户端脚本程序的页面,或者使用<OBJECT>元素创建客户端组件实例,将会发现这是非常有用的。在大多数情况下,脚本运行期对象可在客户端上实例化和使用,效果与服务器上的ASP相同。 
    1. VBScript CreateObject方法 
    在客户端使用CreateObject时,在浏览器的环境内创建组件或对象实例,它们与浏览器运行在相同的内存空间里(即进程内),除非实现的对象是带有.exe扩展文件名的可执行文件。 
    通常指定对象的ClassID,而不是使用ProgID字符串,这样就不可能与其他安装在客户端的对象发生冲突。 
    <SCRIPT LANGUAGE=”VBScript”> 
    Dim objThis 
    Set objThis = CreateObject(“clsid:892D6DA7-E0F9-00105A42AF30”) 
    … 
    </SCRIPT> 
    当然也可以使用ProgID,并且使用通用的对象或组件(特别是标准安装提供的对象或组件),那么得到错误的组件的风险是很小的: 
    <SCRIPT LANGUAGE=”VBScript”> 
    Dim objThis 
    Set objThis = CreateObject(“Scripting.Dictionary”) 
    … 
    </SCRIPT> 
    2. Jscript ActiveXObject方法 
    为了在客户端上实例化Jscript的对象和组件,必须使用ActiveXObject方法和new操作符: 
    <SCRIPT LANGUAGE=”JScript”> 
    var objMyData = new ActiveXObject(‘clsid: 892D6DA7-E0F9-00105A42AF30’); 
    </SCRIPT> 
    或: 
    <SCRIPT LANGUAGE=”JScript”> 
    var objMyData = new ActiveXObject(‘this.object’); 
    </SCRIPT> 
    3. <OBJECT>元素技术 
    也可使用<OBJECT>元素创建客户端对象或组件的实例。应省略RUNAT属性或者将其设定为“CLIENT”。然而,这个属性在客户端上是被忽略的,因此设置这个属性的唯一目的就是,在ASP页面使用<OBJECT>元素实例化服务器端的组件实例时防止混淆。 
    <OBJECT ID=”objThis” RUNAT=”CLIENT” 
    CLASSID=”clsid: 892D6DA7-E0F9-00105A42AF30” 
    CODEBASE=”http://yourserver.com/components/mycomponent.cab”> 
    <PARAM NAME=”param1” VALUE=”value1”> 
    <PARAM NAME=”param2” VALUE=”value2”> 
    </OBJECT> 
    注意,这里出现的CODEBASE属性,表示允许下载并安装来自URL的组件(如果该组件没有安装)。IE 3.0以上的版本有此功能。 
    对于使用<OBJECT>元素的方法、可使用的属性、在客户端使用的值,可查看网站http: //msdn.Microsoft.com/workshop/author/dhtml/reference/objects/OBJECT.asp,或者Windows 2000 Platform SDK文档中的<OBJECT> tags,或者看看《IE5 Dynamic HTML Programmer’ Reference》一书,ISBN 1-861001-74-6,Wrox出版社。 
    ================================ 

    ActiveXObject 对象

    启用并返回 Automation 对象的引用。

    newObj = new ActiveXObject(servername.typename[, location])

    ActiveXObject 对象语法有这些部分:

    参数

    newObj

    必选项。要赋值为 ActiveXObject 的变量名。

    servername

    必选项。提供该对象的应用程序的名称。

    typename

    必选项。要创建的对象的类型或类。

    location

    可选项。创建该对象的网络服务器的名称。

    说明

    Automation 服务器至少提供一类对象。例如,字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。

    要创建 Automation 对象,将新的 ActiveXObject 赋给对象变量:

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

    本代码启动创建对象的应用程序(在这种情况下,Microsoft Excel 工作表)。一旦对象被创建,就可以用定义的对象变量在代码中引用它。 在下面的例子中,通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells 集合。

    // 使 Excel 通过 Application 对象可见。
    ExcelSheet.Application.Visible = true;
    // 将一些文本放置到表格的第一格中。
    ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
    // 保存表格。
    ExcelSheet.SaveAs("C://TEST.XLS");
    //  Application 对象用 Quit 方法关闭 ExcelExcelSheet.Application.Quit();

    只有当 Internet 安全性关闭时才能完成在远程服务器中创建对象。要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObject 的 servername 参数。该名称与共享名的机器名部分相同。比如共享名为 "//myserver/public" 的网络,servername 是 "myserver"。另外,可以用 DNS 格式或 IP 地址指定 servername

    下面的代码返回在名为 "myserver" 的远程网络计算机上运行的 Excel 实例的版本号:

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

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

    javascript字典对象Dictionary用法[new ActiveXObject("Scripting.Dictionary")]
    2008-05-06 13:38


    解说:
    字典对象的创建:
    var dic=new ActiveXObject("Scripting.Dictionary");

    创建了字典对象后就可以使用它的属性和方法了:

    dic.add(key,value) 用来添加一组字典项目.
    dic.remove(key) 用来删除指定key的字典项目.
    dic.removeAll() 方法是用来删除字典全部项目.
    dic(key)可以取得字典里的值
    用dic.Keys()来表示key的集合, 然后将集合转化为数组;然后用a.getItem(索引值)来取得字典的key. 
    dic.Exists(key) 用来搜索字典中的key, 它是一个布尔值,存在就返回true,否则为false;
    //===================================================
    <script language = JavaScript>
    function ok(){
    try{
       var obj = new ActiveXObject("Scripting.Dictionary");//创建对象
       obj.Add("hello","BeiJing");//增加新项
       obj.Add("world","北京");
       obj.Item("hello")="上海";//修改
       //遍历Dictionary
       var keys=obj.Keys().toArray();//将obj对象的键值转换成数组
       for(var i = 0;i<keys.length;i++){
           if(obj.Exists(keys[i])){//判断对象集合中是否存在指定键值的项
            alert(obj(keys[i]));
    obj.Item(keys[i])=null;
            obj.Remove(keys[i]);//删除指定键值项
           }
       } 
    }
    catch(e)
    {
       alert(e.message);
    }
    }
    ok();
    </script>

    在Browser里通过JavaScript的new ActiveXObject( "AAA.BBB" )可以创建一个COM物件,但此种行为只能在Browser的安全限制为低时才能执行,这对于用户而言是不可接受的,如果安全限制不为低时,Browser没有任何提示下出错退出,我想,既然JavaScript提供new ActiveXObject这样的语句,就应该有其实用的地方,那位大侠能告诉我相关的知识?

    回答:

        安全是头等大事,所以IE加这样的限制也是合理的。一般来说控件需要实现IObjectSafety 才行,可以参考微软的Knowledge Base的文章:“Q164119 AMPLE: SafeCtl.exe Implements IObjectSafety in ActiveX Control”

  • 相关阅读:
    IntelliJ IDEA常用统一设置2-Inspections检查设置(Linux/Mac/Windows)
    IntelliJ IDEA版本:Ultimate、Community、EAP版本的区别
    IntelliJ IDEA重构技巧收集
    Java泛型中的类型擦除机制简单理解
    阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
    Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)
    Java使用logback记录日志时分级别保存文件
    Java中List,Set和Map详解及其区别和使用场景(转)
    Java中泛型的Class<Object>与Class<?>的区别(转)
    Java中泛型T和Class<T>以及Class<?>的理解(转)
  • 原文地址:https://www.cnblogs.com/zqyanywn/p/6249516.html
Copyright © 2011-2022 走看看