Когда XHTML может неожиданно вызвать проблемы в IE?
Поскольку IE не будет отображать XHTML как XHTML, а вместо этого будет рассматривать его как HTML, когда это может вызвать проблемы для IE?
4 ответа
Я знаю один случай, когда
<div style="clear:both" />
в браузерах, которые поддерживают XHTML, div закрывается. Но IE будет воспринимать div как открытый, поэтому макет может привести к неожиданному результату позже.
Internet Explorer будет иметь проблемы при различении документов XHTML и документов XML, если MIME-тип не указан как text/html. Однако, поскольку он полностью поддерживает HTML 4.01, большинство проблем возникает из-за несовместимых и нестандартных реализаций свойств позиционирования, макета и CSS. Чтобы избежать каких-либо проблем, лучше написать действительный XHTML и указать DOCTYPE.
Самозакрывающийся синтаксис не будет работать (он будет работать только с элементами, которые всегда пусты в HTML). XML-сериализаторы могут генерировать
<textarea/>
,<script/>
и тому подобное, которые разбивают страницы различными способами (вызывая сложное восстановление после ошибок, иногда включая повторный анализ оставшейся части страницы).Явно закрытые HTML "пустые" элементы могут вести себя странно (
</br>
вставки ломаются в IE).<![CDATA[
вне жесткого кода HTMLCDATA
элементы будут распознаваться как тег. Это не повлияет на выход и может заставить некоторый контент исчезнуть.В HTML
CDATA
элементы (а именно<script>
) объекты не будут распознаны. XHTML требует<script> if (1 < 2) …
которая будет синтаксической ошибкой в IE.Фон
<body>
будет применяться по-разному в IE.В CSS не будет кросс-браузерного синтаксиса для селекторов, учитывающих пространство имен.
Вы получите все подразумеваемые элементы HTML (например,
<tbody>
во всех таблицах) и неявно закрытых элементов (обычно это не проблема, когда документ действителен, но другие браузеры не будут предупреждать вас, пока разметка будет правильно сформирована).Элементы и атрибуты с префиксами не будут иметь пространства имен и будут отличаться
tagName
в IE (что также недопустимо в XML). Они также не получат подходящего стиля и поведения по умолчанию (<xhtml:a>
не может быть ссылкой).Вы не сможете использовать методы, учитывающие пространство имен, такие как
createElementNS
(они не существуют в IE),.tagName
будет в верхнем регистре в IE, но не во всех случаях.Элементы и атрибуты с префиксами не будут иметь пространства имен и получат другое локальное имя в IE (что также недопустимо в XML).
Это только проблемы, связанные с переходом с рабочего XML-документа на HTML. Когда вы переходите от HTML (то есть того, что все ожидают и воспринимают как нормальное поведение) к реальному XML, возникает столько же сюрпризов, например, document.write
не работает, делая большинство скриптов Google бесполезными.
Все это относится к любому браузеру, который рассматривает XHTML как text/html, а не как IE, но вы должны прочитать Приложение C спецификации XHTML 1.0 здесь: http://www.w3.org/TR/xhtml1/