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

本文探讨了ASP中JavaScript和VBScript混用的情况,以及`runat=server`属性对脚本执行优先级的影响。实验表明,<%%>包裹的代码优先于`runat=server`代码执行,而头部声明的语言优先级最高。不同`runat=server`脚本的执行顺序取决于其语言类型,不总是vbscript最后执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

最近接触了一点ASP,虽然技术有点过时,但是我还是第一次使用,有必要总结一下最近碰到的一些问题。

第一点,ASP中JavaScript和VBScript的混用问题。ASP中JavaScript和VBScript是可以混用的,下面的代码可以说明,在JavaScript中使用的变量可以通过VBScript赋值之后,得到改变。

<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时的代码,但又低于头部声明的脚本语言以外的脚本语言。这句话有点拗口,怎么理解,来看下面的代码

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值