Asp-Classic
頁麵包含 IE 條件註釋時的經典 ASP 解析錯誤
我想我在 ASP 處理 IE 條件註釋(或一般的 html 註釋)的方式中發現了一個錯誤。
從理論上講,它根本不應該處理它們,因為它們是為客戶端設計的。
在實踐中 ..
<!--[if IE 6]> <!--include virtual="emptyfile.asp"--> <![endif]-->將返回
<![endif]>是的,你沒看錯..它將刪除評論的開頭,包括文件中的任何內容並保留結束評論標籤..
這當然會弄亂 html,當然也會讓 IE 對所有人執行任何操作……
有明顯的解決方法,例如使用
server.execute包含您的文件而不是包含指令,這將按預期工作..很可能它將 include 指令的結尾
-->與 html 註釋的開頭混淆了<!--。但它根本不應該打擾 html 註釋。以這種方式發生這種情況有什麼已知的原因嗎?還是只是一個錯誤?
這不是錯誤。
asp include 語法期望
#include在標記註釋中找到關鍵字。但是,它並不要求從註釋開始序列的末尾到#include關鍵字之間只有空格。因此這是非常合法的:-<!-- pink elephants #include virtual="myinc.asp" -->這也是合法的:-
<!-- #include virtual="myinc.asp" -->
<!--現在,註釋內部的任何後續出現都被視為與任何其他文本一樣。因此這仍然是合法的: -<!-- <!-- #include virtual="myinc.asp" -->它是第
<!--一個開始註釋的註釋,被 ASP 視為包含標記。第二個只是忽略的文本。整個註釋被“myinc.asp”文件的內容替換。如果文件碰巧是空的,那麼評論就會被簡單地刪除。現在額外
[if IE 6]>的仍然只是被忽略的文本,所以整個[if IE 6>\r\n<!--將被忽略的文本。因此:-<!--[if IE 6> <!-- #include virtual="emptyfile.asp" -->替換為“emptyfile.asp”的內容。任何後續:-
<![endif]-->逐字發送。