WSC脚本部件技术:利用Javascript编写ActiveX控件
作者:Rimifon 来源:无忧脚本 发布时间:2008-05-05 13:13:00
标签:wsc,脚本,acticex,控件,js
一个简单的例子:
将如下代码另存为.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"))
这样能防止网络故障而出现的错误。
0
投稿
猜你喜欢
- 目录前言什么是pip再说 pip, 它就像应用宝下面给我们的手机安装应用宝Centos 安装pip for python2试用pip来安装库
- 今天生产上项目启动访问 一个数据库的时候,出现了ORA-12505, TNS:listener does not currently kno
- 长期以来一直以为iframe跟div一样都是块级元素,直到今天在一个群中看到一位朋友问到iframe怎么居中的时候,测试了下发现原来我一直对
- 本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下功能需求用户输入数字选择要进行的操作添加名片删除名片修改
- 本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作
- 引用计数Python默认的垃圾收集机制是“引用计数”,每个对象维护了一个ob_ref字段。它的优点是机制简单,当新的引用指向该对象时,引用计
- 关于Python的格式化字符串,几乎所有接触过Python语言的人都知道其中一种,即使用运算符%,但对于绝大多数初学者来说也仅此而已。因此,
- 目录一、前言二、什么是super三、super的常用使用场景总结一、前言最近有粉丝向我咨询super相关的问题,说网上搜索到的教程不够通俗易
- 如我们在之前的教程里讨论的那样,分页可以通过两种方法来实现:默认分页– 你仅仅只用选中data Web control的 智能标签的Enab
- global 属性返回 Boolean 值,指出正则表达式使用的global 标志 (g) 的状态。默认值为 false。只读。rgExp.
- 这个功能需要写一点代码来实现。下面的函数可以得到一个变量的类型,调用时传递一个变量进去,会返回用字符串形式描述的变量类型。//得到x的类型,
- 前言Python语言提供了Socket套接字来实现网络通信。Python的应用程序通常通过Socket"套接字"向网络发
- 前言前段时间在微博看到一段摸鱼人的倒计时模板,感觉还挺有趣的。于是我用了一小时的时间写了个页面出来 摸鱼办地址 (当然是摸鱼的时间啦)。模板
- 使用axios发送post请求出现400错误出现400状态码主要有两种原因1.bad request:“错误的请求&qu
- 数据备份与还原第三篇,具体如下基础概念:备份,将当前已有的数据或记录另存一份;还原,将数据恢复到备份时的状态。为什么要进行数据的备份与还原?
- 直接在table标签中设置下不就行了吗?这是静态的,如果要动态设置你会吗?function com_onresize(){var conte
- 如下所示:import numpy as npimport pandas as pdfrom pandas import Series,Da
- Python在很大程度上可以对shell脚本进行替代。笔者一般单行命令用shell,复杂点的多行操作就直接用Python了。这篇文章就归纳一
- 下面是用SA-FileUp组件上传一个HTML文件的程序:fileup.htm < HTM
- 首先我们供给一台主机要进行的步骤就是对其主机端口的扫描,查看其中开放的端口。我们首先创建一个TCP的全连接的扫描器。我们使用socket来创