经典的asp中<%%>和<script language ="vbscript"runat ="server">有什么区别?

ope*_*sas 7 vbscript runatserver asp-classic

我在网上找不到太多文档

到目前为止,显而易见的差异似乎是你不能使用"script"标签混合html和vbscript

例如,这没关系

<% public sub display_literal() %>
  literal
<% end sub %>

但是你应该使用脚本标签


<script language="vbscript" runat="server">
public sub display_literal2()
    response.write "literal2</br>"
end sub
</script>

在本页面

http://www.newobjects.com/pages/ndl/alp/asp-structure.htm

它说

在经典ASP中,以页面的默认脚本语言(即<%%>标签所假定的语言)编写的脚本被执行第二 - 例如,<%%>标签中的所有脚本代码在所有<SCRIPT RUNAT之后被初始化= SERVER ...>脚本.

但我做了几个测试,无法验证它......

我问,因为我有一个脚本(我现在没有它),使用<%%>给了我一个错误,将其更改为<script>标签解决了问题,但我想知道为什么....

无论如何,我想我们应该使用<script>标签来处理从<%%>标签调用的函数和程序......对吗?

Ant*_*nes 10

首先,您需要了解服务器端script标签的处理方式有所不同,具体取决于指定的语言是否与页面的默认语言相同.

顺序是这样的: -

  1. <script runat="server"标记中运行所有脚本,其中指定的语言与默认语言不匹配.这些按文档顺序执行.
  2. 运行默认脚本.这意味着执行对响应的隐含写入,其中页面中存在静态内容(不在runat="server"标签或内部的内容<% %>)以及<% %>显然在文档顺序中的任何中间代码.
  3. <script runat="server"标记中找到的全局级别运行任何代码,其中语言与默认脚本语言匹配.

请注意,在执行阶段1之前,所有脚本都有一个初始解析,因此可以在阶段3中运行的脚本定义的任何函数都可用于从阶段1调用.