搜索:
首页 >> JavaScript >> Js高级编程 >> WSC脚本部件技术:利用Javascript编写ActiveX控件

WSC脚本部件技术:利用Javascript编写ActiveX控件

2008-5-5 作者:Rimifon 来源:无忧脚本 投递文章

一个简单的例子:

将如下代码另存为.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"))

这样能防止网络故障而出现的错误。

Tags:wsc  脚本  acticex  控件  js 
相关文章
手机版 Js高级编程 Asp之家 Aspxhome.com
闽ICP备06017341号