Asp classic 页面包含IE条件注释时的经典ASP解析错误

Asp classic 页面包含IE条件注释时的经典ASP解析错误,asp-classic,Asp Classic,我想我已经在ASP处理IE条件注释(或html注释)的方式中发现了一个bug 理论上,它根本不应该处理它们,因为它们是为客户端准备的 实际上 <!--[if IE 6]> <!--include virtual="emptyfile.asp"--> <![endif]--> 会回来的 <![endif]> 是的,你读对了。。它将删除注释的开头,包括文件中的任何内容,并保留结束注释标记 这当然会把html搞乱,当然也会让IE的所有功能都被

我想我已经在ASP处理IE条件注释(或html注释)的方式中发现了一个bug

理论上,它根本不应该处理它们,因为它们是为客户端准备的

实际上

<!--[if IE 6]>
<!--include virtual="emptyfile.asp"-->
<![endif]-->

会回来的

<![endif]>

是的,你读对了。。它将删除注释的开头,包括文件中的任何内容,并保留结束注释标记

这当然会把html搞乱,当然也会让IE的所有功能都被执行

有一些明显的解决方法,例如使用
server.execute
来包含您的文件,而不是include指令,这将按预期工作


如果您在IE 8中进行测试,则很可能会将include指令的结尾
-->
与开头
混淆,那么
将是

请检查此链接

不同版本IE的条件注释。

这不是错误

asp include语法希望在标记注释中找到关键字
#include
。但是,它不要求从注释开始序列的末尾到
#include
关键字之间只有空格。因此,这是相当合法的:-

 <!-- pink elephants #include virtual="myinc.asp" -->
替换为“emptyfile.asp”的内容。任何后续:-

<![endif]-->


是逐字发送的。

实际上,问题发生在所有浏览器中。。因为这是服务器的错误行为,而不是客户端的错误行为..+1感谢您确认我的怀疑并详细说明!这很有道理。我不认为这是一个编程问题本身。
<!--
<!-- #include virtual="myinc.asp" -->
<!--[if IE 6>
<!-- #include virtual="emptyfile.asp" -->
<![endif]-->