vbscript和javascript互相调用

2016-01-29 18:20 48 1 收藏

vbscript和javascript互相调用,vbscript和&#106avascript互相调用

【 tulaoshi.com - ASP 】

  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 =

来源:http://www.tulaoshi.com/n/20160129/1505339.html

延伸阅读
标签: PHP
  <?php //对Javascript和select部件的结合运用 //在写程序的过程,我想实现在select对象选中选项后, //不需要提交按钮,而直接触发动作,且在动作发生后 //的页面中要保持所选择的选项。经过形容,终于通过 //使用Javascript及select对象的onchange属性及 //value值而实现了这种功能。 //代码如下(文件名为"test.php&qu...
标签: ASP
  使用javascript创建Microsoft XML DOM,就可以完成这一工作. // 装入数据. var source = new ActiveXObject("Microsoft.XMLDOM"); source.async = false source.load("history.xml"); // 装入样式表. var stylesheet = new ActiveXObject("Microsoft.XMLDOM"); stylesheet.async = false ...
标签: Web开发
?   $size_small=5;//液晶宽度   $size_big=25;//液晶长度   $distance=10;//间距   $color_back="#DDDDDD";   $color_dark="#CCCCCC";   $color_light="#000000";   $number=0; ? html head titleTimer/title meta http-equ...
  信息来源:《黑客防线》 本文一共介绍了七种方法: 一:最简单的加密解密 二:转义字符"\"的妙用 三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码) 四:任意添加NUL空字符(十六进制00H) (自创) 五:无用内容混乱以及换行空格TAB大法 六:自写解密函数法 七:错误的利用 (自创) 在做网页时(...
   [译者注:将本文的最后示例代码拷贝至文本文件中,更名文件为homepage.htm格式文件,在浏览器中运行,本文以该示例代码讲解   简介   ====================================   问题是我想解决自动访问http://www.thehungersite.com。这个页面能够限制你每一天只访问它一次(不要忘记在这链接上点击)。  ...

经验教程

640

收藏

14
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部