ASP页面内VBScript和JScript的交互

js|jscript|vbscript|交互|页面

    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环境的通用脚本库成为可能。

时间: 2024-09-11 01:27:40

ASP页面内VBScript和JScript的交互的相关文章

ASP页面内VBScript和JScript的交互(转)

js|jscript|vbscript|交互|页面 ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数.ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript.不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言. 脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的.不同的环境和要求使得我们在选择脚本

ASP页面内VBScript和JScript (转)

js|jscript|vbscript|页面 ASP页面内VBScript和JScript  (仙人掌工作室·CPCW) ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数.ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript.不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言. 脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最

VBScript与JScript谁怕谁(1)

转自: ChinaByte 在ASP环境下,VBScript和JScript哪种语言更好一些?本文测试这两种脚本语言完成常见操作所需要的时间,分析它们各自的长处和不足,并根据测试结果得出了一些值得关注的结论. 作者:仙人掌工作室 原文出处:http://www.asptoday.com/articles/20000920.htm 选择方案体系需要考虑许多因素,往往关系到基于性能.容量.可维护性.职员经验.现有基础.个人爱好的成本优势分析.在典型的Microsoft/IIS实现中,这种考虑将继续深

VBScript与JScript谁怕谁(4)

转自: ChinaByte 上面的第一.三.四.六几种算法有一个共同特点:或者是其中一种语言独具某个功能,或者在正则表达式匹配和距离计算中,两种语言的差别非常大,足以成为一个很有意义的混合语言编程测试项目.这就为我们测试这些算法增加了两种方案:以VBScript作为基本语言调用内嵌的JScript函数:以JScript为基本语言调用内嵌的VBScript函数.测试代码举例如下(测试方案:字符串翻转,以JScript为基本语言,VBScript内嵌): < %@Language=JScript%

加密你的ASP页面—Script Encoder初探

encode|加密|页面|encode|加密 一.概述 一直以来ASP技术受到了越来越多朋友的喜爱使用ASP从事WEB开发的人也越来越多.ASP一个非常明显的特征是页面在服务器端经过处理之后发送到浏览器中的内容为标准的HTML格式这样有效的保护了页面程序的原代码不被客户端轻易获取当然MS的BUG不断那是另一回事了.^_^.但是另一个普遍存在的问题是由于ASP页面是纯文本的形式存放在服务器端可以轻易看到全部编程逻辑.这样给ASP应用商业化带来了一定的困难.解决的方法一般是使用组件技术将编程逻辑封装

VBScript与JScript谁怕谁(5)

转自: ChinaByte 第一组测试的结果如下表所示.表中的数值是在不同方案下1000次ASP页面调用的平均执行时间,以秒计(每次执行ASP页面时测试例程执行一次). 方案  语言***  字符串翻转*  字符串查找**  正则表达式模式匹配*  位移操作*  简单数学计算*  复杂数学计算**  VB - VB  2.245  2.038  4.452  2.200  2.173  2.151  JS - JS  2.690  2.214  2.635  2.166  2.288  2.31

使用VBScript和JScript编写WEB应用程序(一) 拙作一片,凑或者看吧:-(

js|jscript|vbscript|web|程序 使用VBScript和JScript编写WEB应用程序 我心飞扬 写这篇文章的动机是看到了大家对VBScript和Javascript的讨论以及另一片类似的文章,觉得有必要将大家的想法加以整理:-),并将我在工作中产生的一些心得拿出来和大家分享,希望对大家有所帮助.当然,水平有限,错误在所难免. Active Server Pages是Microsoft Windows DNA的重要组成部分,使用ASP我们可以很容易的构造功能强大的基于Web

加密你的ASP页面——Script Encoder初探

encode|加密|页面 一.概述 一直以来ASP技术受到了越来越多朋友的喜爱使用ASP从事WEB开发的人也越来越多.ASP一个非常明显的特征是页面在服务器端经过处理之后发送到浏览器中的内容为标准的HTML格式这样有效的保护了页面程序的原代码不被客户端轻易获取当然MS的BUG不断那是另一回事了.^_^.但是另一个普遍存在的问题是 由于ASP页面是纯文本的形式存放在服务器端可以轻易看到全部编程逻辑.这样给ASP应用商业化带来了一定的困难.解决的方法一般是使用组件技术将编程逻辑封装入DLL之中但问题

访问asp页面出现出现“请求的资源在使用中”的解决办法_win服务器

首先解决方法:在Dos命令行状态下分别输入下列命令并按回车(Enter)键: regsvr32 jscript.dll (命令功能:修复Java动态链接库) regsvr32 vbscript.dll (命令功能:修复VB动态链接库) 如果不行再试下面的方法: "内部服务器错误" "请求的资源在使用中"解决办法 [转] 一.出现的问题 windows2003 IIS6运行ASP, http 500 - 内部服务器错误 就是asp程序不能浏览 但htm静态网页不受影响