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 |
|
若要在远程服务器上创建对象,只能在关闭 Internet 安全机制时完成。您可以通过将计算机的名称传递到ActiveXObject 的 servername 参数在远程网络计算机上创建对象。该名称与共享名的计算机名部分相同。对于名为“//MyServer/public”的网络共享,servername 为“MyServer”。此外,您可以使用 DNS 格式或 IP 地址来指定servername。
以下代码返回在名为“MyServer”的远程网络计算机上运行的 Excel 实例的版本号:
复制代码 |
|
|---|---|
function GetAppVersion() {
|
|
如果指定的远程服务器不存在或者找不到,则会出错。
属性和方法
ActiveXObject 对象不具有任何内部属性或方法;它允许您访问自动化对象的属性和方法。
|
最近老是出现JS在我面前,有很多是特效或其他AJAX方面的,也在研究Prototype.js的脚本库,但对于我这种JS菜鸟来说有很多东东还不是很懂。所以今天去看了一看教程,对于我们.NET的程序员来说,对OO编程已经没有什么新鲜的了,但对于JS中的OO编程我还不是很熟悉,所以今天就来学习学习JS中的ActiveXObject对象,在接下来的几篇随笔中我会慢慢的把其他对象给总结出来。
有事没事new一个,要声明ActiveXObject对象当然也不例外,它能返回一个Automation对象的引用,代码如下: var obj=new 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);
}
如果指定的远程服务器不存在或找不到时将发生错误。
|
解说: 创建了字典对象后就可以使用它的属性和方法了: dic.add(key,value) 用来添加一组字典项目. 在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对象(转载)的更多相关文章
- Three.js 入门指南(核心对象)
推荐大家可以看看这个:http://wenku.baidu.com/link?url=RQU2exzV_EF3GATc3bzQU2o9LGMuCmiN5nUJth5SLG3E2TrxtBLQodJU_ ...
- js入门之内置对象Math
一. 复习数据类型 简单数据类型, 基本数据类型/值类型 Number String Boolean Null Undefined 复杂数据类型 引用类型 Object 数组 数据在内存中是如何存储的 ...
- Ext.js入门:Window对象与FormPanel(六)
一:Ext.Window类 二:Ext.Window类实例 三:Ext.FormPanel类 四:Ext.FormPanel类实例 1.类Ext.Window 包: Ext 定义的文件 Windo ...
- 前端js入门之 JavaScript 对象直接量
JavaScript中,创建对象可以使用构造函数方式. 代码实例如下: obj.webName = "博客园"; obj.address = "编程语言"; 以 ...
- js入门之内置对象Date
一. Date对象 Math和Date对象的区别 Math对象和Date对象的区别 Math不是一个构造函数,里面提供的是静态成员 Date是一个构造函数 首先要通过new Date() 来创建日期实 ...
- Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转
前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...
- js:JavaScript中的ActiveXObject对象
JavaScript中的ActiveXObject对象作用: https://blog.csdn.net/pl1612127/article/details/77862174
- js 判断文件是否存在(转载)
js 判断文件是否存在(转载) var fso,s=filespec; // filespec="C:/path/myfile.txt"fso=new ActiveXObject ...
- d3.js 入门指南
说到数据可视化,我们会行到很多优秀的框架,像echarts.highcharts,这些框架很优雅,健壮,能满足我们对可视化的大部分需求,但是缺点也很明显,就是这些框架几乎是不可定制化的,当遇到特殊的需 ...
随机推荐
- html基础 样式
html样式:本文演示如何在head中添加样式信息使文本格式化 <html> <head> <style type="Text/css"> h1 ...
- java技术 spring 配置
spring 的IOC是反射注入,用来管理对象的创建与销毁.一般使用都是在启动的web服务器的时候就创建了对象,可以选择自动装配对象管理,将对象引用实现与引用分开.采用的xml配置方式.及大减少了各个 ...
- eaby技术架构变迁
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 最近在infoq上面看到 ebay介绍其系统架构变迁以及系统设计分享方面的讲座,其中 ...
- 【原创】loadrunner12.53 录制脚本时 打不开网页或者打开网页慢?
问题描述: 之前刚装12.5版本时候,用 WebTours测试过,应用程序选择自己本地IE浏览器.exe程序,输入url地址就可以成功录制了 . 但是由于公司网络配置环境改变了(猜测),现 ...
- C# List结果集排序
public class Student { public string Name { get; set; } public int Age { get; set; } public Student( ...
- redis 事务
概述 相信学过MySQL等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行.为什么会有这样的需求呢?看看下面的场景: 微博是一个弱关系型社交网络,用户之 ...
- 照片元数据信息以及在照片中写入gps信息
/// 照片元数据编码 在下面的文章里,可以看到图片所有的元数据定义信息 https://msdn.microsoft.com/zh-cn/library/system.drawing.imaging ...
- Sql Server中不常用的表运算符之APPLY(1)
写在这个系列的前面: 就像他们的名字一样,作为一个表运算,他们用来运算左表和右表.JOIN也是一个表运算符,不过他太常用了. APPLY: 将右表表达式应用在左表的每一行上. APPLY是Sql200 ...
- js原生方法传参的细节(面试必问)
废话不说,直接上题. slice(),接收两个参数,第一个为开始index(从0开始),第二个为结束的index(也是从0开始,但是不包括index本身,只到index-1).返回值是截取的数组,原数 ...
- Ogre 1.9 Android移植
Ogre 1.9 Android移植 分类: 图形渲染2013-02-04 16:47 3860人阅读 评论(14) 收藏 举报 Android Ogre C++linuxLinuxLINUX 上一篇 ...
复制代码