В HTML5 нет нового стандарта для комментариев. Единственный допустимый синтаксис комментария по-прежнему <!-- -->
. Из раздела 8.1.6 W3C HTML5 :
Комментарии должны начинаться с четырехсимвольной последовательности U + 003C МЕНЬШЕ ЗНАКА, U + 0021 Восклицательный знак, U + 002D ДЕФИС-МИНУС, U + 002D ДЕФИС-МИНУС ( <!--
).
В <!
синтаксических берет начало в SGML DTD разметки, которая не является частью HTML5. В HTML5 он зарезервирован для комментариев, разделов CDATA и объявления DOCTYPE. Поэтому, является ли эта альтернатива плохой практикой, зависит от того, считаете ли вы использование (или, что еще хуже, зависимость от) устаревшей разметки плохой практикой.
Validator.nu называет то, что у вас есть «Поддельный комментарий». - это означает, что он рассматривается как комментарий, даже если это недействительный комментарий. Предположительно это сделано для обратной совместимости с pre-HTML5, который был основан на SGML и имел декларации разметки, принимавшие форму <!FOO>
, поэтому я бы не стал называть это новым. Причина они рассматриваются как комментарии, потому что декларации SGML разметки , были специальные заявления не должны быть вынесено, но так как они не имеют смысла в HTML5 (с указанными выше исключениями), насколько HTML5 DOM обеспокоен они не являются не более , чем комментарии ,
Следующие шаги в разделе 8.2.4 приводят к такому выводу, которому Chrome, похоже, следует в точности:
8.2.4.1 Состояние данных :
Использовать следующий вводимый символ:
«<» (U + 003C)
Перейти в состояние открытия тега.
8.2.4.8 Открытое состояние тега :
Использовать следующий вводимый символ:
"!" (U + 0021)
Перейти в открытое состояние объявления разметки.
8.2.4.45 Открытое состояние объявления разметки :
Если следующие два символа являются символами «-» (U + 002D), используйте эти два символа, создайте токен комментария, данные которого являются пустой строкой, и переключитесь в состояние начала комментария.
В противном случае, если следующие семь символов являются совпадением без учета регистра в кодировке ASCII для слова «DOCTYPE», используйте эти символы и переключитесь в состояние DOCTYPE.
В противном случае, если есть скорректированный текущий узел и он не является элементом в пространстве имен HTML, а следующие семь символов являются совпадением с учетом регистра для строки «[CDATA [» (пять заглавных букв «CDATA» с U + 005B ЛЕВЫЙ КВАДРАТНЫЙ символ до и после), затем используйте эти символы и переключитесь в состояние раздела CDATA.
В противном случае это ошибка синтаксического анализа. Перейти в состояние фиктивного комментария. Следующий потребляемый символ, если таковой имеется, является первым символом, который будет в комментарии.
Обратите внимание, что в нем говорится о переключении в состояние начала комментария только в том случае, если последовательность встречающихся символов равна <!--
, иначе это фиктивный комментарий. Это отражает то, что указано в разделе 8.1.6 выше.
8.2.4.44 Состояние фиктивного комментария :
Использовать все символы до первого символа «>» (U + 003E) или конца файла (EOF) включительно, в зависимости от того, что наступит раньше. Выдать токен комментария, данные которого представляют собой конкатенацию всех символов, начиная с символа, который заставил конечный автомат переключиться в состояние фиктивного комментария, вплоть до символа непосредственно перед последним использованным символом (т. Е. До символа непосредственно перед символом U + 003E или EOF), но с любыми символами U + 0000 NULL, замененными на символы U + FFFD REPLACEMENT CHARACTER. (Если комментарий был начат в конце файла (EOF), токен пуст. Точно так же токен пуст, если он был сгенерирован строкой " <!>
".)
Говоря простым языком, это превращается <!div displayed>
в <!--div displayed-->
и <!/div>
в <!--/div-->
точно так, как описано в вопросе.
В заключение, вы, вероятно, можете ожидать, что другие парсеры, совместимые с HTML5, будут вести себя так же, как Chrome.