JS的ActiveXObject对象[摘]
最近老是出现JS在我面前,有很多是特效或其他AJAX方面的,也在研究Prototype.js的脚本库,但对于我这种JS菜鸟来说有很多东东还不是很 懂。所以今天去看了一看教程,对于我们.NET的程序员来说,对OO编程已经没有什么新鲜的了,但对于JS中的OO编程我还不是很熟悉,所以今天就来学习 学习JS中的ActiveXObject对象,在接下来的几篇随笔中我会慢慢的把其他对象给总结出来。
有事没事new一个,要声明ActiveXObject对象当然也不例外,它能返回一个Automation对象的引用,代码如下:
下面我们来看看参数说明:
obj谁都知道是变量,即要赋值为ActiveXObject的变量名;
servername提供该对象的应用程序名称;
typename要创建的对象地类型或类;
location创建该对象得网络服务器名称。
Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。例如要创建Excel的Application和Sheet对象,代码如下:
var ExcelSheet = new ActiveXObject("Excel.Sheet")
一旦对象被创建,就可以用定义的对象变量在代码中的引用它。下面我们将通过一个例子来看看对对象和方法的引用,通过对象变量 ExcelSheet
访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells
集合。
代码如下:
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 实例的版本号:
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)