Каково влияние использования HTML-тегов, которые недопустимы в соответствии с типом документа? - PullRequest
0 голосов
/ 22 марта 2012

В настоящее время мы работаем с системой (в лучшую или худшую сторону), которая объявляет тип документа следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Проблема в том, что многие из наших пользователей, которые будут писать контент, привыкли использовать теги в стиле XHTML, такие как <br /> или <img ... />, вместо тех, которые строго должны использоваться (например, <br> и <img>).

У меня вопрос: как это отразится на реальных возможностях рендеринга в браузерах и на семантике?

Я склоняюсь к тому, чтобы а) браузер не справедливо бросал это и ожидал, что он наклонится назад, и знает, что делать, и б) снимает «гарантию», что любой браузер сегодня или в Будущее будет знать, как правильно отображать наши страницы.

Страница выглядит внешне хорошо (хотя просмотр исходного кода вызывает у меня дрожь), но разве это имеет какой-то более зловещий эффект, который не сразу бросается в глаза?

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Браузеры просто не заботятся о таких вещах. Обычно они даже поддерживают атрибуты, которые просто не существуют в данном типе документа (<a target="..."> в строгом XHTML).

Однако, если вы используете XHTML с типом содержимого XML, они могут использовать синтаксический анализатор XML, который будет строгим и выдает ошибку, если вы делаете недопустимые вещи - IE, как известно, ведет себя так.

1 голос
/ 22 марта 2012

Вопрос, кажется, касается «самозакрывающихся» тегов в HTML 4.01, а не гораздо более общего вопроса в заголовке. Ответ заключается в том, что они не влияют на браузеры, и вряд ли это изменится, учитывая огромное количество такого кода вокруг.

Технически, <br /> и <img ... /> не являются недействительными в HTML 4.01. HTML формально был определен так, что из-за определенных синтаксических особенностей эти конструкции означают то же самое, что и <br>> и <img ...>> (где конечный > является символом данных). Браузеры не реализуют HTML таким образом; вместо этого они просто обрабатывают / как нераспознанную и поэтому отбрасываемую часть тега.

...