Классическая ошибка парсинга ASP, когда страница содержит условные комментарии IE

Я думаю, что определил ошибку в способе, которым ASP обрабатывает условные комментарии IE (или комментарии HTML в целом)..

В теории это не должно обрабатывать их вообще, так как они предназначены для клиентского..

На практике..

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

возвратится

<![endif]>

Да, Вы читаете это правильно.. это удалит открытие комментария, включают то, что находится в файле, и сохраните заключительный тег комментария..

Этот of'course испортит HTML, и of'course делают то, что было, чтобы IE был выполнен для всех...

существует очевидное обходное решение, такое как использование server.execute включать Ваш файл вместо включать директивы, которая будет работать как ожидалось..

Скорее всего, это путает окончание --> из включать директивы с открытием <!-- из комментария HTML.. Но это не должно беспокоиться комментариями HTML вообще..

Есть ли знать причина, это происходит таким образом? или это - просто ошибка?

7
задан 3 revs, 2 users 100% 27 February 2010 в 16:05
поделиться

2 ответа

Это не ошибка.

Синтаксис asp include ожидает найти ключевое слово #include в комментарии к разметке. Однако он не требует, чтобы от конца последовательности начала комментария до ключевого слова #include оставался только пробел белого цвета. Следовательно, это вполне законно:-

 <!-- pink elephants #include virtual="myinc.asp" -->

Это также законно:-

 <!--
 #include virtual="myinc.asp"
 -->

Теперь любое последующее появление