在 Web 网页上使用VBscript 和 Jscript

综述:本文讨论了 VBscript 和 Jscript 之间的区别,以及它们的使用场合。
本文还讨论了:
l Visual InterDev 中的VBscript 和 Jscript
l 内联服务器脚本和

值得注意的是,在这两个例子中 LANGUAGE 这项属性是设置为“Javascript”的。Internet Explorer 对于"Jscript" 和"Javascript"这两个名字都认识,而许多其他的浏览器却只认识"Javascript",不认识"Jscript" 。因此,为了保险起见,如果你不能确定该网页是用Internet Explorer来浏览,你最好用"Javascript"。
要了解更多在 Jscript 中建立事件处理程序的情况,请查看位于MSDN Library Online中的Microsoft Visual InterDev(TM) 文档。(要访问MSDN Library Online 必须有MSDN Online
Membership 资格,这一资格是免费的,不过要简单的一次性的注册一下。)

如何在Visual InterDev 中明确所用的脚本编写语言?
不管你用什么语言来编写脚本,你必须要明确的指出来,这样主机才知道用什么脚本引擎来处理你的脚本。到底用什么语言来编写,取决于你是用内联服务器脚本来进行工作还是用

注意:在 IIS的服务器脚本中要求有LANGUAGE 属性。而在客户端脚本中它只是一个选项。
如果 LANGUAGE 属性没有了,处理程序会使用缺省的脚本语言。在 Internet Explorer的客户端脚本中,缺省值通常是第一个

是的,你可以这么做。但是,这样你就会被 IIS ASP处理程序的执行顺序控制。例如,如果你建立了服务器脚本并且在 IIS 4.0 中运行它,你会发现执行顺序是这样的:
l 采用非缺省语言的

它不会起任何作用。说得更明白一点就是,文档写入说明会往网页中写入一个空的字符串。为什么?很简单,在处理 VBscript 块时,下面的 Jscript

在 VBscript 脚本中,很明显,我在提到 doubleMe 函数和ctr 变量时,没有正确使用字母的大小写,但是程序依然运行良好。
这是一个好消息。而坏消息就是,在下面这些情况下你一定要注意字母的大小写:如果网页中的 Jscript 脚本所包含的单元只能够通过字母的大写和小写来区分,例如,
一个叫做 Timer()的函数和一个叫做 timer 的全局变量等等。记住,尽管这种编码方式不怎么好,但是有时候在你的网页中还是可能会遇到原来就存在的编码。

如果你在一个函数调用中把 Jscript 单元的名字作为一个字符串参数来使用
如果 Jscript 包括的单元仅仅能够用字母的大小写来区分,那么VBscript 就会让你把
它们看成一样的 (也就是说,不区分大写和小写)。VBscript 只能看看不管大小写的区别,它们是不是一样,因此它识别出的只有一个Jscript 单元。换一句话说,如果VBscript 首先找到的是叫做 Timer()的函数,那么它就无法找到叫做 timer 的全局变量了,反之也是一样。即便你在VBscript 编码中十分注意的把它们做了区别结果也是一样。因为VBscript 在处理这些名字的时候认为它们只有一种写法。不幸的是,这里没有其它的解决方法,除非在 Jscript 的代码中不利用这些大小写之间的微小差别来区分不同的函数名称。
除了在某些特殊的情况下,把单元名作为参数使用这种问题并不常见。特殊情况之一是在 Visual InterDev 6.0 中的脚本对象模型中。下面我会把它作为一个例子来使用,你可以把它看作是相同情况下的处理准则。
Visual InterDev 6.0 的脚本对象模型都是用Jscript 来编写的。你也可以用VBscript来编写自己的编码,它能够与用VBscript 区分大小写方式编写的脚本对象模型一起使用。
有时候,你不能够直接调用某一方法,除非你把这个方法的名称传递到一个 Jscript 函数中,而由函数来为你调用这个方法。
一个典型的例子就是警告方法,你可以用它把一个方法绑定到一个特殊的事件上。在下面这个例子中,一个按钮的 onmouseover 事件被绑定到 changecaption()事件处理程序上。
复制内容到剪贴板程序代码 程序代码

因为你把这些名字作为字符串传送到一个 Jscript 函数中,所以你能够得到正确的大小写表示。稍后,Jscript 会自动用它的区分大小写的规则来重新评估这些名字,如果大
小写不正确,它会找不到它们。

从 VBscript 往 Jscript 中传送数组
有时候一个VBscript 程序会传送一个数组作为它的一个参数,或者作为它的返回值。
你可以从 Jscript 中调用这个程序,不过必须把VBscript数组转换成为一个可用的Jscript数组。你只要在 Jscript 函数中建立一个VBArray 对象并且用 toArray 把它转换成为一个Jscript 数组就可以了。
注意:Jscript 不支持多维数组,如果原来的 VBscript 数组是多维的,经过 toArray 的转换后它会成为一个一维的 Jscript 数组。
在下面的例子中有一个 VBscript 脚本,它建立了一个数组,还有一个 Jscript 脚本,它将说明如何才能获得并使用这个数组:
复制内容到剪贴板程序代码 程序代码

不过,在目前的 VBscript (4.0)中,反过来是无法做到的。也就是说你不能把一个Jscript 数组转换成为 VBscript 数组。如果你遇到的是一个 Jscript 程序,要转换数组,你可以选择一下几种做法:
l 用 Jscript 编写调用程序
l 用 VBscript 重新编写 Jscript 程序
l 如果可能,把 Jscript 数组转换成一种不同的结构,如转换成一个限制的字符串等,这样 VBscript 就能够使用了。例如,你可以用 toString 函数把一个数组转换成一个用逗号分隔的,无限制的字符串。这样,在 VBscript 中你就能够用 Split 函数把它分成不同的单元。很明显这种方法在很多时候并不管用,不过有时又的确有效。

更新脚本语言
VBscript 和 Jscript 都不是一成不变的语言。两种语言的引擎都定时进行更新,增加一些新的特性,解决已经发现的问题。因为两种语言实际上都是作为 ActiveX 组件来应用的,所以每当你更新任何控制器时,你就可以同时更新它们。当你安装了新的语言引擎之后,任何需要调用引擎的应用程序会在它们运行某些脚本时调用这个新引擎——这些引擎包括 Internet Explorer 或 Visual InterDev 等。
如果要了解语言引擎的情况以及如何更新的方法,还有脚本的一般知识,请访问Microsoft Scripting Web 站点,网址是:http://msdn.microsoft.com/scripting/。同
时,祝你编写脚本时一切顺利!
[本日志由 parno 于 2012-05-27 03:46 PM 更新]
上一篇: ASP 如何读取其它网站的网页内容?
下一篇: Server.Transfer Response.Redirect 的区别
文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags: VisualBasic VBscript Web HTML VBS Jscript
相关日志:
评论: 0 | 引用: 0 | 查看次数: 7280