最近接触了一点ASP,虽然技术有点过时,但是我还是第一次使用,有必要总结一下最近碰到的一些问题。
第一点,ASP中JavaScript和VBScript的混用问题。ASP中JavaScript和VBScript是可以混用的,下面的代码可以说明,在JavaScript中使用的变量可以通过VBScript赋值之后,得到改变。
< head >
< title > Page1 </ title >
< script language ="JavaScript" >
alert( " JavaScript " );
var a = " JavaScript " ;
alert(a);
</ script >
< script language ="vbscript" >
a = " vbscript "
alert( " vbscript " )
alert(a)
</ script >
< script language ="JavaScript" >
alert(a);
</ script >
</ head >
< body >
</ body >
</ html >
第二点,原来在.Net之前,ASP中就已经有Runat=server这样的用法了。对于<script language="javascript" runat=server> 或者 <script language="vbscript" runat=server> 或者仅仅是以<%%>包围起来的代码,执行的先后顺序是什么?实际上是:对于ASP文件的头部声明(<%language="XXX"%>)的脚本语言,以<%%>包围起来的代码的执行优先级高于Runat=server时的代码,但又低于头部声明的脚本语言以外的脚本语言。这句话有点拗口,怎么理解,来看下面的代码






















































上面的代码的执行结果是:
4 javascript runat=server
10 javascript runat=server
6 perl runat=server
14 perl runat=server
1 HTML
3 HTML
5 HTML
7 HTML
8 inline script
9 HTML
11 HTML
13 HTML
2 vbscript runat=server
12 vbscript runat=server
可以看到一开始声明 <%@language="vbscript"%>,那么vbscript runat=server部分的代码是在最后执行的,比



还要慢,那么是不是只要是vbscript runat=server,那么执行优先级就最低?再来看下面的代码:






















































这次的结果是:
2 vbscript runat=server
12 vbscript runat=server
6 perl runat=server
14 perl runat=server
1 HTML
3 HTML
5 HTML
7 HTML
8 inline script
9 HTML
11 HTML
13 HTML
4 javascript runat=server
10 javascript runat=server
这次最慢的的是javascript runat=server,所以可以证明上面的结论是正确的。