asp中的<script runat=server>和<% %>的区别

 我看到为什么有些在服务器端运行language=vbscript byte,2007-10-22 11:45:43
<script language=vbscript runat=server>
'这里是代码,如:
response.write "88888888<br>"
</script>
我看到为什么有的ASP文件中要这样写呢,为什么不直接用下面的更方便吗?
<%
'这里是代码,如:
response.write "88888888<br>"
%>
请教这二者有什么区别吗?


Xinsoft,2007-10-22 11:50:00
1、<% ... %> 这种写法相当于 <script runat=server> ... </script>
2、<% ... %> 支持的语言是VBScript还是JScript,取决于 IIS 的默认脚本语言设置。通常这个设置的默认值是VBScript。
3、无论是<% ... %> 这种写法,还是 <script runat=server ...> ... </script> 都可以指定使用何种语言。


byte,2007-10-22 18:04:28
按照你的意思,那是写法不同,但功能是一样的,但是下面的语句:
复制代码

  1. <script language="vbscript" runat="server">  
  2. response.write "1"  
  3. </script>
  4. <%response.write "2"%>


输出的是21,而不是12,请问这又是为什么?


ByVal,2007-10-22 18:22:56
因为在最终编译阶段,script标签的优先级最低,当所有流程处理完毕,已经准备好回发流时才处理它,如果你要在它的范围内使用response.write向回发流增加数据,必定会排在最后,因为回发流已经建立


风Na,2007-10-22 19:16:43
呵呵,如果你用下面这段代码呢?

复制代码
  1.  
  2. <script language="Jscript" runat="server">  
  3. response.write("1"); 
  4.  </script>  
  5. <%response.write "2"%>  
  6.  


风Na,2007-10-22 19:18:05
服务器脚本的执行顺序是
采用非缺省语言的<SCRIPT>单元脚本  
内联脚本  
采用缺省语言的<SCRIPT>单元脚本
摘自http://topic.csdn.net/t/20020820/20/956643.html


ByVal,2007-10-22 19:18:28

这就是解释引擎间的差别体现了


ByVal,2007-10-22 19:19:39
以上的顺序在很大程度上依赖于ActiveX语言引擎的载入顺序,同时IIS中的ASP处理程序可能在将来会有所改变,因此,我们很不希望你按照这个顺序进行工作,不管你是只把<SCRIPT>单元用于函数或者子程序,还是把它仅仅用于执行顺序无关紧要的编码。


风Na,2007-10-22 19:23:18

呵呵,还是.Net处理<% %>和<script>比较科学。。。


ByVal,2007-10-22 19:35:42
一个是解释的,一个是编译的.区别就在这里了


daniel_daniel,2007-10-23 10:19:37
长学问了。好贴,好人,好问题

测试代码如下:
<%=4%>
<%Response.Write(5)%>
<script language="jscript" runat="server">Response.Write(1)</script>
<script language="vbscript" runat="server">Response.Write(2)</script>
<script language="jscript" runat="server">Response.Write(3)</script>

当在前面用<% @LANGUAGE="VBSCRIPT" %>或不用的时候,就是让面用默认script为vbscript,输出顺序为13452
当在前面用<% @LANGUAGE="JSCRIPT" %>的时候,就是让面用默认script为Jscript,输出顺序为24513

总结 - asp在运行时候对tag的处理顺序:
1.先执行非默认script的script tag内语句(@language="vbscript"时,先执行<script langauge=javascript runat=server,反之亦然)
2.再执行percent tag内语句
3.最后执行使用默认script的script tag内语句(@language="vbscript"时,执行<script langauge=vbscript runat=server,反之亦然)
=直接输出不影响顺序
微软的产品怪怪的啊~欢迎交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章