通行证: 用户 密码
域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏
热门:qq挂机,asp,php,jsp,xml
,sql,.net,编程 程序 网页图象
首页>网络编程>其他相关>正文 中国黑客群攻击美政府网站 拿到部   微软计划开放office文件格式 消除   腾讯联合八部门严厉打击挂机网站   神六载人飞行圆满成功   美国会要求nasa彻底完成空间站建   google中国研究院有望落户清华   深度分析:论雅虎中国的夭折和阿   神六可能于10月13日上午11点发射   盖茨继续当全美首富   adobe ceo痛斥微软 称其管理层从   
热 点 排 行
dll文件下载
qq挂机的n种快速方法
长白山天池怪兽再现 一分钟
腾讯qq调整升级条件 不再诱
ape歌曲的播放、转换和刻录
新开放qq免费挂级网站
qq挂级程序,qq免费挂机源程
刘亦菲 变性人、堕胎,自称
photoshop通道抠图:给秀发
免费把qq炫铃设为本机qq的
用通通通作代理在局域网上
用6位qq注意啦,免费领取6位
超级女声总决赛 现场实况(
用nero制作win98多功能启动
亲身体验!让桌面不再粗糙
推 荐 新 闻
中国黑客群攻击美政府网站
bittorrent被好莱坞招安盗
网站建设中,关键词选择技
神六载人飞行圆满成功
国庆长假上网慎防“移动杀
连环起诉google 传统媒体欲
最强秘籍 ie7最新使用技巧
神六完成总装可接航天器 外
adobe ceo痛斥微软 称其管
微软急调张亚勤回中国 千里
微软宣布重大重组方案 将划
腾讯qq 2005 beta3火热发布
腾讯扩张路线图曝光 陈天桥
腾讯拍拍网正式吹响进军c2
第五届“西湖论剑”文字实
相 关 新 闻
首页>网络编程>其他相关>正文

vbscript和javascript互相调用


http://www.iyit.net  日期:2005-11-24 17:47:15  来源:易特网络技术  点击:
asp具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。asp开发环境提供了两种脚本引擎,即vbscript(缺省)和jscript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的activex脚本引擎就能使用任何脚本语言。 
脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。 
此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在asp应用中如何让vbscript脚本和jscript脚本交互以最大限度地获得两种脚本语言的特色支持。 

一、vbscript和jscript的内置函数 
在vbscript和jscript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,vbscript提供了许多用于操作字符串和格式化数据的函数,这些函数在jscript中并不存在。这些函数包括strreverse()、filter()以及formatcurrency()等。在另一方面,jscript所提供的用于管理数组、字符串编码等的函数在vbscript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。 
那么,如果在jscript程序中需要一个vbscript函数该怎么办呢? 

二、异种脚本的互相调用 
如果需要在jscript脚本中调用一个vbscript中内置的函数,则应该写一个vbscript用户定义函数(在这里调用vbscript内置函数),然后在jscript脚本中象调用公用jscript函数一样调用这个用户定义函数。 
例如,如果要调用的vbscript内置函数是formatcurrency(),则可以声明如下自定义函数: 
 < script language="vbscript" runat="server">
  function formatvalue(value) 
  formatvalue = formatcurrency(value)
  end function
  < /script>
接下来在jscript代码中就可以象普通jscript函数一样调用formatvalue()了。用类似的方法也可以实现vbscript代码调用jscript函数。 
应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从jscript脚本内调用一个不带参数的vbscript过程(sub)时应略加注意,此时在jscript中应该象调用一个不带参数的jscript函数一样调用它,如用foo()调用vbscript sub foo过程。 

三、数据共享 
在某些情形下混合运用vbscript和jscript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。 
对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例vbscript的过程调用,当从jscript中调用一个不带参数的vbscript对象的方法时,其调用方法也遵从jscript的调用规则,反之亦然。 
四、数组管理 
数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。 
vbscript数组在jscript下可以用vbscript的符号引用,即用myarray(2)引用数组元素而不是jscript的数组元素引用符号myarray[2]。此外,还可以使用一个特殊的jscript对象——vbarray对象将vbscript数组转换为jscript数组。下面的代码从vbscript数组myvbarray创建jscript数组myjsarray: 
 var temp = new vbarray(myvbarray)
  var myjsarray
  myjsarray = temp.toarray()
上述代码首先创建一个临时的vbarray对象,然后使用它的toarray()方法将自己转换为jscript数组。此后就可以象普通jscript数组一样使用myjsarray,如myjsarray[1]。但应当注意的是,toarray()方法将把一个多维的vbarray转换为一维的jscript数组。 
从vbscript中引用jscript数组更为复杂。虽然在vbscript中我们可以直接访问jscript数组相关的方法和属性,但没有直接访问jscript数组的单个元素的方法。也就是说,我们可以在vbscript脚本中读取jscript数组的长度属性,如下所示: 
x = myjsarray.length 
但无法直接读取该数组的单个元素,下面的vbscript代码是不正确的: 
x = myjsarray(3) 
解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定vbscript是缺省的脚本语言: 
< %
dim temp
dim myvbarray
temp = myjsarray.join(", ")
myvbarray = split(temp, ", ")
%>
此处的jscript join()方法将数组myjsarray元素转换到一个以逗号为分割符的字符串,vbscript split()函数将字符串转换为vbscript数组。注意这里我们是在vbscript环境下调用jscript的join方法。依照此例,我们可以通过自定义vbscript函数来模拟jscript的vbarray对象的toarray()方法以实现jscript数组到vbscript数组的转换。

小结 
在同一个asp工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于vbscript也可用于jscript环境的通用脚本库成为可能。 

上一篇:java编程规范
下一篇:使用hotmetal

[发送给好友] [打印本页] [关闭窗口] [返回顶部] 转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 投稿作者: 易特网络技术
信息来源: 易特网络技术 录入时间: 2005-11-24 17:47:15
浏览次数: 投稿信箱: shtghy@163.com
  友情链接
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ?2004-2005 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息