知识大全 VBScript和JScript的交互与传值

Posted 函数

篇首语:越工作越能工作,越忙碌越能发明出闲暇。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VBScript和JScript的交互与传值相关的知识,希望对你有一定的参考价值。

VBScript和JScript的交互与传值!  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  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( )引用数组元素而不是JScript的数组元素引用符号myArray[ ] 此外 还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组 下面的代码从VBScript数组myVBArray创建JScript数组myJSArray var Temp = new VBArray(myVBArray) var myJSArray myJSArray = Temp toArray()

  上述代码首先创建一个临时的VBArray对象 然后使用它的toArray()方法将自己转换为JScript数组 此后就可以象普通JScript数组一样使用myJSArray 如myJSArray[ ] 但应当注意的是 toArray()方法将把一个多维的VBArray转换为一维的JScript数组

  从VBScript中引用JScript数组更为复杂 虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性 但没有直接访问JScript数组的单个元素的方法 也就是说 我们可以在VBScript脚本中读取JScript数组的长度属性 如下所示

  x = myJSArray length

  但无法直接读取该数组的单个元素 下面的VBScript代码是不正确的

  x = myJSArray( )

  解决该问题的一个可行的方法是执行一个转换过程 如下面的代码所示 此处假定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数组的转换

  

  五 小结

cha138/Article/program/net/201311/13849

相关参考

知识大全 VBScript和JScript的交互与传值[1]

VBScript和JScript的交互与传值[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 调试JScript/VBScript的方法

调试JScript/VBScript的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!可单步运行

知识大全 js和as的稳定传值问题解决

最近在实现flash的播放音乐的功能这就涉及到js和as交互的问题因为要实现动态改变音乐文件的功能可是如何判定呢?   但是在实现js传值给flash时flash在获取值存在几率性有时可以获

知识大全 JScript对象

JScript对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jscript对象是属性和方法

知识大全 jscript错误代码及相应解释大全

JScript运行时错误JScript运行时错误是指当JScript脚本试图执行一个系统不能运行的动作时导致的错误当正在运行脚本计算变量表达式或者正在动态分配内存时出现JScript运行时错误时错误号

知识大全 JSF jsp页面和后台bean传值问题

JSFjsp页面和后台bean传值问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  :jsf中

知识大全 JScript数据类型

JScript数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jscript有三种主要数

知识大全 JScript脚本技术基础

JScript脚本技术基础  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JScript脚本技术

知识大全 JScript运算符

JScript运算符  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JScript具有全范围的运

知识大全 JScript函数

JScript函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MicrosoftJscrip