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 实例的版本号:

  复制代码
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 方法关闭 Excel
ExcelSheet.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”

JS入门之ActiveXObject对象(转载)的更多相关文章

  1. Three.js 入门指南(核心对象)

    推荐大家可以看看这个:http://wenku.baidu.com/link?url=RQU2exzV_EF3GATc3bzQU2o9LGMuCmiN5nUJth5SLG3E2TrxtBLQodJU_ ...

  2. js入门之内置对象Math

    一. 复习数据类型 简单数据类型, 基本数据类型/值类型 Number String Boolean Null Undefined 复杂数据类型 引用类型 Object 数组 数据在内存中是如何存储的 ...

  3. Ext.js入门:Window对象与FormPanel(六)

    一:Ext.Window类 二:Ext.Window类实例 三:Ext.FormPanel类 四:Ext.FormPanel类实例   1.类Ext.Window 包: Ext 定义的文件 Windo ...

  4. 前端js入门之 JavaScript 对象直接量

    JavaScript中,创建对象可以使用构造函数方式. 代码实例如下: obj.webName = "博客园"; obj.address = "编程语言"; 以 ...

  5. js入门之内置对象Date

    一. Date对象 Math和Date对象的区别 Math对象和Date对象的区别 Math不是一个构造函数,里面提供的是静态成员 Date是一个构造函数 首先要通过new Date() 来创建日期实 ...

  6. Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转

    前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...

  7. js:JavaScript中的ActiveXObject对象

    JavaScript中的ActiveXObject对象作用: https://blog.csdn.net/pl1612127/article/details/77862174

  8. js 判断文件是否存在(转载)

     js 判断文件是否存在(转载) var fso,s=filespec; // filespec="C:/path/myfile.txt"fso=new ActiveXObject ...

  9. d3.js 入门指南

    说到数据可视化,我们会行到很多优秀的框架,像echarts.highcharts,这些框架很优雅,健壮,能满足我们对可视化的大部分需求,但是缺点也很明显,就是这些框架几乎是不可定制化的,当遇到特殊的需 ...

随机推荐

  1. Sublime Text

    今天在网上找了个Sublime Text 3 Build 3065 的 license key .在最新的Build 3083 下可以使用,记录下. ----- BEGIN LICENSE ----- ...

  2. C++与零值比较

    1.布尔值与零值的比较 if(flag)//if为真 if(!flag)//if为假 其它都为不良风格: if (flag == TRUE) ) if (flag == FALSE) ) 2.整形值与 ...

  3. C++设计模式-Proxy代理模式

    Proxy代理模式 作用:为其他对象提供一种代理以控制对这个对象的访问. 代理的种类: 如果按照使用目的来划分,代理有以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代 ...

  4. 嵌套 QQ、微博 通讯工具到HTML中

    自己QQ.微博的实例: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defa ...

  5. ios 使用Core Image实现高斯模糊

    在iOS和OS X平台上,Core Image都提供了大量的滤镜(Filter),这也是Core Image库中比较核心的东西之一.按照官方文档记载,在OS X上有120多种Filter,而在iOS上 ...

  6. jquery 上传回显图片预览

    /******************************************************************************* * 异步上传文件,兼容IE8,火狐和谷 ...

  7. spring 注入静态变量

    import java.util.Iterator; import java.util.LinkedList; import javax.annotation.PostConstruct; impor ...

  8. 【leetcode】 Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  9. Nginx的安装配置 例子

    1.下载 2.解压 3.运行 a.双击nginx.bat b.启动Nginx 会发现进程里面已经开始运行 4.配置 a.双击打开配置文件夹里面的nginx.conf b.修改 upstream tee ...

  10. 区块 Blocks

    Structure / Blocks / Demonstrate block regions