在Web网页上使用VBScript 和JScript[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 ghj1976 的 blog

不管你用什么语言来编写脚本,你必须要明确的指出来,这样主机才知道用什么脚本引擎来处理你的脚本。到底用什么语言来编写,取决于你是用内联服务器脚本来进行工作还是用<script>块来工作(不管是客户端脚本还是服务器脚本),同时也取决于你所使用的visual interdev的版本。

为内联服务器脚本选择脚本语言

如果你使用的是iis和asp网页,你可以编写两类服务器脚本:内联脚本(在<% %>分隔符中的脚本)和在<script>单元中的脚本。一般来说,用内联脚本你可以把结果插入到网页中的html中。相反,在<script>单元中的脚本是用来建立从内联脚本中调用的功能和子程序的。

注意:要建立一个在<script>单元中的脚本并让它运行起来像内联脚本也是可能的。也就是说,脚本所陈述的不是一项功能或者某个子程序的一部分。不过我们并不推荐这种做法。要知道更多的细节请看本文后面部分的"服务器脚本执行顺序"。

对于服务器和客户端脚本来说,为<script>单元选择语言的方法是一样的。要知道详细情况请见本文后面部分的"为一个 <script> 单元设置语言"。

在一个网页中所有的内联脚本要用同一种语言来编写。当你建立了一个新的asp网页后,网页中会自动包含一个@指示,它指明了内联脚本的脚本语言。@指示可以像这样:

<%@ language="vbscript" %>

@指示一定是网页中的第一行内联脚本命令。如果没有这个指示,iis会缺省地指定用vbscript来作为内联脚本语言。

改变网页的内联脚本语言

在visual interdev 1.0中,可以对网页进行编辑把指示改变一下,设置一种新的语言,如"javascript."等。

在visual interdev 6.0中,右键点击网页后就会出现该网页的properties对话框。然后在default脚本语言下,选择一种新语言。经过应用之后,编辑器会在@指示中更新为相应的脚本语言。当然,如果你愿意,你也可以自己手动编辑@指示。

你还能够为所有的新asp网页更换缺省值。这个操作不能够改变现在的网页,不过它对你从现在起建立的所有网页都会有用。

为内联脚本更换缺省语言

在visual interdev 1.0中,从工具菜单中选择options选项,然后再选择html一栏。在active server pages的缺省脚本语言处选择一种语言。

在visual interdev 6.0中,右键点击project explorer中的项目名字,然后选择properties。选择editor defaults一栏,然后在缺省脚本语言处选择一个新的缺省值。

为<script>单元设置语言

与内联服务器脚本不一样的是,你在<script>单元中所使用的脚本语言在同一个网页中可以有很多种。如果某一块是用vbscript来编写的,那么另一块也可以用jscript。(记住,不是所有的平台都支持vbscript。)

注意:在同一个网页中混合几种语言有很多注意事项,详细内容请见本文后面部分的 "在同一个网页中用几种不同的语言来工作"。

为一个<script>单元指定语言

在<script>标记中包含了一个language单元,它指明了你所要使用的语言。例如,在下面这个<script>标记中就指明了该<script>单元中的所有脚本都要用jscript编写:

<script language="javascript">
function test(){
alert("testing");
}
</script>

注意:在iis的服务器脚本中要求有language属性。而在客户端脚本中它只是一个选项。如果language属性没有了,处理程序会使用缺省的脚本语言。在internet explorer的客户端脚本中,缺省值通常是第一个<script>单元的脚本语言,或者如果还没有指明任何语言,那就是jscript了。我们建议你最好不要依赖于缺省值,最好是为<script>单元明确地设置一种脚本语言。

在一个<script>单元中,你不能把vbscript 和jscript混合起来使用。如果你想同时使用它们,在你的网页中你必须至少有两个<script>单元。

visual interdev 1.0 和visual interdev 6.0都提供了能够自动生成脚本的工具。在visual interdev 1.0 中有script wizard可以帮助你。而在visual interdev 6.0中有下列产生脚本的工具:

  • script block命令。只要你在网页中点击右键,出现的菜单中就会有这个命令。它能够在你点中的那一点插入一个<script>单元的框架。
  • script outline命令。当你双击事件的名字时它就会建立一个事件控制器的框架。在你的设置的基础上,不同的脚本生成工具会决定你所要用的语言。你可以在个别网页中为脚本工具而改变缺省的语言种类。

在visual interdev 1.0中为script wizard设置语言

从tools菜单中选择options选项,然后选择html栏。在script wizard的缺省脚本语言中选择一种语言。

在visual interdev 6.0中为脚本生成工具设置一个网页中的语言

首先,右键点击网页,网页的properties对话框出现。然后在缺省脚本语言下选择一种新的语言。你能够为服务器脚本和客户端脚本设置同一种语言。

注意:为产生服务器脚本块而作出的设置一样可用于为内联脚本设置语言。如果你想在内联脚本中使用一种语言,而在用工具产生的服务器脚本块中使用另外一种语言,你只能手工地进行语言改换。

你还可以改变你的项目的缺省值,这样你建立起来的所有网页都会有与脚本工具一样的缺省语言设置。

在visual interdev 6.0项目中改变脚本生成工具的缺省语言设置

在project explorer中右键点击项目的名字,然后选择properties。选择editor defaults,在缺省脚本语言处选择一个新的缺省值。

注意:已产生的服务器脚本块语言的设置方法同样可以用于为内联脚本设置语言。如果你想在内联脚本中使用一种语言,而在用工具产生的服务器脚本块中使用另外一种语言,你只能手工地进行语言改换。

想知道visual interdev 6.0中脚本生成工具的更多信息,请查看位于msdn library online中的"choosing a scripting language"和visual interdev 6.0文档中的 "handling events with html elements"。

在同一个网页中同时使用几种语言

我想我已经说得很清楚了,在同一个网页中可以使用不同的脚本编写语言。让 再回顾一下:为什么你想这么做?以下是几个原因:

第一个原因是:你只是想在一个程序中利用某种语言的优点,而脚本的其他部分还是用另外一种语言来编写。

第二个原因是:可能你所面对的现有编码是用你不熟悉的语言来编写的。例如,设计时间控制是用jscript编写的,而你熟悉的语言却是vbscript。在大部分情况下,你可以在同一个网页中混合几种脚本语言并且它们相互之间能够配合得很好。用一种语言编写的脚本可以调用用另外一种语言编写的程序并且能够共享全局变量。不过有时候还是会出现一点小问题,现在我将要就此说明一下。

在一个vbscript调用中的括号

当你从vbscript中调用一个jscript函数时,注意在调用过程中要有括号,即使这项函数不要求设置参数也需如此。例如,一个调用应该像这样:

retval = calljsfunction()

如果你忘记了加括号,那么这个函数所返回的值就不是你所希望的值,而是一个包含了函数本身的目标。

服务器脚本的执行顺序

内联服务器脚本按顺序运行,从头到尾。你可以在一个服务器脚本中定义一个可调用的程序(函数或者是子程序),这样的话,如果需要就可以随时调用它们。

所有的内联脚本必须用同一种语言来编写,也就是在网页前面的@指示中所指明的脚本语言。因此,在一个内联脚本中你不能把几种脚本语言混合起来。

你也许会说"等一等"。在理论上,把内联脚本放到<script>单元中是绝对可能的--也就是说只要在单元中的脚本不是一个函数或者一个子程序就可以了。就像下例一样:

<% response.write("some inline script<br>")%>
<script language="vbscript" runat="server">
response.write("script in a script element<br>")
</script>

是的,你可以这么做。但是,这样你就会被iis asp处理程序的执行顺序控制。例如,如果你建立了服务器脚本并且在iis 4.0中运行它,你会发现执行顺序是这样的:

  • 采用非缺省语言的<script>单元脚本
  • 内联脚本
  • 采用缺省语言的<script>单元脚本

以上的顺序在很大程度上依赖于activex语言引擎的载入顺序,同时iis 中的asp处理程序可能在将来会有所改变,因此,我们很不希望你按照这个顺序进行工作,不管你是只把<script>单元用于函数或者子程序,还是把它仅仅用于执行顺序无关紧要的编码。

脚本块的顺序

本文关键:在Web网页上使用VBScript 和JScript
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top