--------------------
如果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脚本语言引擎的载入顺序
非缺省语言的<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莫属。
(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> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先
如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先
#5
up
#6
还是你归纳的好!
#7
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的<script> 优先呢?
#8
由脚本解释引擎的加载顺序决定谁优先
#9
都是牛人
#10
写在前面的先执行了.
#11
优先级问题
#1
服务器脚本一般执行顺序是:
非缺省语言的<SCRIPT>单元脚本 -》主脚本命令 -》缺省语言的<SCRIPT>单元脚本
依赖于ActiveX脚本语言引擎的载入顺序
非缺省语言的<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莫属。
(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> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先
如果 <script> 用的语言与 <% ... %> 不同, 则 <script> 优先
如果 <script> 用的语言与 <% ... %> 相同, 则 <% ...%> 优先
#5
up
#6
还是你归纳的好!
#7
如果 <script> 用的语言有好几种与 <% ... %> 不同的, 比如有Perl,Python等, 那么哪种语言的<script> 优先呢?
#8
由脚本解释引擎的加载顺序决定谁优先
#9
都是牛人
#10
写在前面的先执行了.
#11
优先级问题