VBScript混用与runat=server时脚本语言的执行优先级

第一点,ASP中JavaScript和VBScript的混用问题。
  ASP中JavaScript和VBScript是可以混用的,下面的代码可以说明,在JavaScript中使用的变量可以通过VBScript赋值之后,得到改变。
+展开
-HTML
<html> 
<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时的代码,但又低于头部声明的脚本语言以外的脚本语言。这句话有点拗口,怎么理解,来看下面的代码

+展开
-HTML
<%@language="vbscript"%>
<HTML><BODY>
1 HTML<br>

<script language="VBscript" runat=server>...
     response.write("2 vbscript runat=server<br/>")
</script> 

3 HTML<br>

<script language="javascript" runat=server>...
     Response.Write("4 javascript runat=server<br/>");
</script> 

5 HTML<br>

<script language="perlscript" runat="server">...
     $Response->Write("6 perl runat=server<br/>");
</script> 

7 HTML<br>

<%...
     Response.write("8 inline script<br/>")
%>

9 HTML<br>

<script language="javascript" runat=server>...
     Response.Write("10 javascript runat=server<br/>");
</script> 

11 HTML<br>

<script language="VBscript" runat=server>...
     response.write("12 vbscript runat=server<br/>")
</script> 

13 HTML<br>

<script language="perlscript" runat="server">...
     $Response->Write("14 perl runat=server<br/>");
</script> 

</BODY></HTML>


上面的代码的执行结果是:

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部分的代码是在最后执行的,比

+展开
-HTML
<%
     Response.write("8 inline script<br/>")
%>

还要慢,那么是不是只要是vbscript runat=server,那么执行优先级就最低?再来看下面的代码:
+展开
-HTML
<%@language="JavaScript"%>
<HTML><BODY>
1 HTML<br>

<script language="VBscript" runat=server>...
     response.write("2 vbscript runat=server<br/>")
</script> 

3 HTML<br>

<script language="javascript" runat=server>...
     Response.Write("4 javascript runat=server<br/>");
</script> 

5 HTML<br>

<script language="perlscript" runat="server">...
     $Response->Write("6 perl runat=server<br/>");
</script> 

7 HTML<br>

<%...
     Response.write("8 inline script<br/>");
%>

9 HTML<br>

<script language="javascript" runat=server>...
     Response.Write("10 javascript runat=server<br/>");
</script> 

11 HTML<br>

<script language="VBscript" runat=server>...
     response.write("12 vbscript runat=server<br/>")
</script> 

13 HTML<br>

<script language="perlscript" runat="server">...
     $Response->Write("14 perl runat=server<br/>");
</script> 

</BODY></HTML>


这次的结果是:

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,所以可以证明上面的结论是正确的。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2168799


加支付宝好友偷能量挖...


评论(0)网络
阅读(117)喜欢(0)Asp/VBScript