Когда 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.

Список всех известных ошибок Internet Explorer

  • Самозакрывающийся синтаксис не будет работать (он будет работать только с элементами, которые всегда пусты в HTML). XML-сериализаторы могут генерировать <textarea/>, <script/> и тому подобное, которые разбивают страницы различными способами (вызывая сложное восстановление после ошибок, иногда включая повторный анализ оставшейся части страницы).

  • Явно закрытые HTML "пустые" элементы могут вести себя странно (</br> вставки ломаются в IE).

  • <![CDATA[ вне жесткого кода HTML CDATA элементы будут распознаваться как тег. Это не повлияет на выход и может заставить некоторый контент исчезнуть.

  • В HTML CDATA элементы (а именно <script>) объекты не будут распознаны. XHTML требует <script> if (1 &lt; 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/

Другие вопросы по тегам