WSC脚本部件技术:利用Javascript编写ActiveX控件
作者:Rimifon 来源:无忧脚本 时间:2008-05-05 13:13:00
一个简单的例子:
将如下代码另存为.wsc文件,并右键“注册”(卸载时右键“不注册”)。
<Component>
<registration ProgId=hello.world />
<public>
<property name=testStr />
<method name=add>
<parameter name=x />
<parameter name=y />
</method>
</public>
<script>
var testStr="默认值";
function add(x, y)
{
return x+" + "+y+" = "+(x+y);
}
</script>
</Component>
然后可以通过new ActiveXObject("hello.world")的方法来调用该控件。
例如:(另存为.js后双击运行。)
var com=new ActiveXObject("hello.world");
WSH.Echo(com.testStr);
WSH.Echo(com.add(84,25));
这样就可以将javascript代码嵌入到其他编程语言中。
另外,不注册也可以调用该控件,例如:(另存为.js后双击运行。)
var com=GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc");
WSH.Echo(com.testStr);
WSH.Echo(com.add(84,25));
注意的是,JS的GetObject方法因为安全限制,在IE下可能是不能运行的。
还可以使用
regsvr32 http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc
指令对远程脚本部件进行本地注册,也可以使用:
regsvr32 http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc /u
进行卸载。
wsc脚本部件注册的控件,受安全限制,因此可能并不适合应用在IE上,比较适合应用在asp或其他编程语言中。 如果服务器注册了该脚本部件,则可以使用:
Set Obj = Server.CreateObject("Hello.World")
如果服务器没有注册该脚本部件,则可以这样:
Set Obj = Server.GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc")
这种方式(这里的URL可以换成本地脚本部件文件所在的绝对地址)。
运用实例:
改写了编程浪子 的js无组件上传,在本地创建远程脚本组件。
<html><head><meta http-equiv="Content-Type"content="text/html;charset=gb2312">
<title>测试远程控件调用</title><%
Dim strInfo
If Request.ServerVariables("Request_Method") = "POST" Then
'Set Upload = Server.CreateObject("Rimifon.Upload")
Set Upload = GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Upload.wsc")
Upload.ReadForm()
strInfo = Upload.SaveFile(".")
Upload.Dispose()
Set Upload = Nothing
End If
Function Info()
Info = strInfo
End Function
%></head><body>
<font color="red"><%=Info()%></font>
<form method=post enctype="multipart/form-data">
<input name="upFile" type="file"><input type="submit">
</form></body></html>
远程调用在Wind2000下测试通过。自己的2003下失败了:(。
本地调用测试通过。
如果服务器没有注册的话,推荐使用本地调用的方法:
Set Upload = GetObject("script:"+Server.MapPath("Upload.wsc"))
这样能防止网络故障而出现的错误。
标签:wsc,脚本,acticex,控件,js
0
投稿
猜你喜欢
jupyter notebook更换皮肤主题的实现
2023-04-13 07:31:38
使用python计算三角形的斜边例子
2023-01-25 01:33:19
python 服务器运行代码报错ModuleNotFoundError的解决办法
2021-03-23 00:39:08
python web框架 django wsgi原理解析
2021-11-21 02:44:59
纯JavaScript实现的分页插件实例
2024-06-09 12:08:26
asp如何验证信用卡是否可用?
2010-06-10 18:39:00
MySQL 函数索引的优化方案
2024-01-23 03:13:36
python中的eval函数使用实例
2021-06-20 00:34:07
简约的实现——服装网站设计
2009-03-06 12:43:00
谈切图优化加速图片显示—淘宝实例
2008-01-30 12:24:00
Python实现Event回调机制的方法
2021-04-10 12:33:29
详解Python中图像边缘检测算法的实现
2021-02-08 09:18:27
python入门课程第四讲之内置数据类型有哪些
2023-05-06 22:09:34
JavaScript使用Promise实现并发请求数限制
2024-04-16 09:54:44
利用GAE&Google Gears做了一个简单的AJAX代理
2009-04-29 12:42:00
javascript读取xml
2024-04-23 09:30:13
sql获取存储过程返回数据过程解析
2024-01-20 07:52:47
python实现kNN算法
2023-01-24 13:58:06
在PyCharm中批量查找及替换的方法
2023-05-29 17:15:13
Python素数检测的方法
2021-02-13 13:07:30