Asp-Classic

經典asp中 <% %> 和 <script language=‘vbscript’ runat=‘server’> 有什麼區別?

  • December 7, 2015

我在網上找不到太多文件

到目前為止,明顯的區別似乎是您不能使用“腳本”標籤混合 html 和 vbscript

例如,這沒關係

&lt;% public sub display_literal() %&gt;
文字
&lt;% 結束子 %&gt;

但是你應該使用腳本標籤


&lt;腳本語言="vbscript" runat="伺服器"&gt;
公共子 display_literal2()
response.write "literal2&lt;/br&gt;"
結束子
&lt;/腳本&gt;

在本頁面

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

它說

在經典的 ASP 中,以頁面的預設腳本語言(即 <% %> 標記所採用的語言)編寫的腳本第二次執行 - 例如,在所有 <SCRIPT RUNAT =伺服器 …> 腳本。

但我做了幾個測試並無法驗證它……

我問是因為我有一個腳本(我現在手頭沒有)使用 <% %> 給了我一個錯誤,將其更改為 <script> 標記解決了問題,但我想知道為什麼….

無論如何,我想我們應該將 <script> 標記用於要從 <% %> 標記呼叫的函式和過程……對嗎?

首先,您需要了解伺服器端script標記的處理方式有所不同,具體取決於指定的語言是否與頁面的預設語言相同。

順序是這樣的:-

  1. &lt;script runat="server"在指定語言與預設語言不匹配的標籤中執行所有腳本。這些按文件順序執行。
  2. 執行預設腳本。這意味著在頁面中有靜態內容(不在runat="server"tags 或 inside中的內容)的響應中執行隱含的寫入,並且顯然按照文件順序再次&lt;% %&gt;插入任何干預程式碼。&lt;% %&gt;
  3. &lt;script runat="server"執行在語言與預設腳本語言匹配的標籤中找到的全域級別的任何程式碼。

請注意,所有腳本在執行階段 1 之前都有一個初始解析,因此可能由階段 3 中執行的腳本定義的任何函式都可用於從階段 1 呼叫。

引用自:https://stackoverflow.com/questions/1447822