asp文件中,如果有jscript脚本,则会首先执行, 但是有vbscript,则脚本中的会最后执行,为什么,请看几行代码?

时间:2022-03-30 07:32:56
asp文件中,如果有jscript脚本,则会首先执行, 但是有vbscript,则脚本中的会最后执行,为什么,请看几行代码?
--------------------
如果asp文件代码为:
 <BODY>
  hello world!
  <script language="jscript" runat="server">
response.write("欢你")
  </script>
 </BODY>
</HTML>
------------------------
则结果:
欢你 hello world!

但是如果asp文件改为vbscript脚本,则却会最后显示“欢你”为什么呢?如下所示:
 <BODY>
  hello world!
  <script language="vbscript" runat="server">
response.write("欢你")
  </script>
 </BODY>
</HTML>则结果:
hello world! 欢你

即完全相反的解释顺序,为什么呢?
好象如果是js,则首先显示脚本生成的内容,再显示html页面中的内容。
可是如果是vbs,则首先显示html页面中的内容,最后再显示脚本生成的内容。

为什么,请大家讲讲,谢谢。

11 个解决方案

#1


服务器脚本一般执行顺序是:

非缺省语言的<SCRIPT>单元脚本 -》主脚本命令 -》缺省语言的<SCRIPT>单元脚本

依赖于ActiveX脚本语言引擎的载入顺序

#2


不明白,请明示

#3


IIS运行ASP脚本的顺序是这样的:

(1)首先运行<script runat="Server" language="JScript"></script>的部分,有几个运行几个。

(2)再运行<%...%>部分和HTML部分。
其中<%...%>部分和HTML部分的执行顺序是按源代码中的书写顺序执行的。

(3)最后再运行<script runat="Server" language="VBScript"></script>的部分,有几个运行几个。

只知道这个现象,至于原因,不知道微软是否有官方说明。猜想可能是由脚本解释引擎的加载顺序决定的。如果你还安装有其它的脚本解释引擎,那么这个顺序需要你测试后才能确知。比如我在本机上还安装有可以在ASP中使用的Perl引擎和Python引擎。

============================
假设你有如下代码:
<br>HTML(1)
<%="<br>ASP(1)"%>
<script runat="Server" language="JScript">Response.Write("<br>JS(1)");</script>
<script runat="Server" language="VBScript">Response.Write "<br>VBS(1)"</script>
<%="<br>ASP(2)"%>
<br>HTML(2)
<script runat="Server" language="JScript">Response.Write("<br>JS(2)");</script>
<script runat="Server" language="VBScript">Response.Write "<br>VBS(2)"</script>


那么结果会是这样:
JS(1) 
JS(2) 
HTML(1)
ASP(1)
ASP(2)
HTML(2)
VBS(1)
VBS(2)


是不是很神奇呢?

五年前我搞ASP没多久就发现这个问题了。
目前我很少这么混着用的,除非非用不可,比如获取服务器时区,这个非JScript莫属。

#4


页面同时存在 <script runat="Server" language="语言">...</script> 和 <% ... %> 时

如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先

#5


up

#6


还是你归纳的好!
引用 4 楼 wcwtitxu 的回复:
页面同时存在 <script runat="Server" language="语言">... </script> 和 <% ... %> 时 

如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先 
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先

#7


如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的<script> 优先呢?

#8


引用 7 楼 cuixiping 的回复:
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的 <script> 优先呢?


由脚本解释引擎的加载顺序决定谁优先

#9


都是牛人

#10


引用 7 楼 cuixiping 的回复:
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的 <script> 优先呢?

写在前面的先执行了.

#11


优先级问题

#1


服务器脚本一般执行顺序是:

非缺省语言的<SCRIPT>单元脚本 -》主脚本命令 -》缺省语言的<SCRIPT>单元脚本

依赖于ActiveX脚本语言引擎的载入顺序

#2


不明白,请明示

#3


IIS运行ASP脚本的顺序是这样的:

(1)首先运行<script runat="Server" language="JScript"></script>的部分,有几个运行几个。

(2)再运行<%...%>部分和HTML部分。
其中<%...%>部分和HTML部分的执行顺序是按源代码中的书写顺序执行的。

(3)最后再运行<script runat="Server" language="VBScript"></script>的部分,有几个运行几个。

只知道这个现象,至于原因,不知道微软是否有官方说明。猜想可能是由脚本解释引擎的加载顺序决定的。如果你还安装有其它的脚本解释引擎,那么这个顺序需要你测试后才能确知。比如我在本机上还安装有可以在ASP中使用的Perl引擎和Python引擎。

============================
假设你有如下代码:
<br>HTML(1)
<%="<br>ASP(1)"%>
<script runat="Server" language="JScript">Response.Write("<br>JS(1)");</script>
<script runat="Server" language="VBScript">Response.Write "<br>VBS(1)"</script>
<%="<br>ASP(2)"%>
<br>HTML(2)
<script runat="Server" language="JScript">Response.Write("<br>JS(2)");</script>
<script runat="Server" language="VBScript">Response.Write "<br>VBS(2)"</script>


那么结果会是这样:
JS(1) 
JS(2) 
HTML(1)
ASP(1)
ASP(2)
HTML(2)
VBS(1)
VBS(2)


是不是很神奇呢?

五年前我搞ASP没多久就发现这个问题了。
目前我很少这么混着用的,除非非用不可,比如获取服务器时区,这个非JScript莫属。

#4


页面同时存在 <script runat="Server" language="语言">...</script> 和 <% ... %> 时

如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先

#5


up

#6


还是你归纳的好!
引用 4 楼 wcwtitxu 的回复:
页面同时存在 <script runat="Server" language="语言">... </script> 和 <% ... %> 时 

如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先 
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先

#7


如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的<script> 优先呢?

#8


引用 7 楼 cuixiping 的回复:
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的 <script> 优先呢?


由脚本解释引擎的加载顺序决定谁优先

#9


都是牛人

#10


引用 7 楼 cuixiping 的回复:
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的 <script> 优先呢?

写在前面的先执行了.

#11


优先级问题