Пустая страница в IE6

Сайт, над которым я работаю и который построен на PHP, иногда показывает совершенно пустую страницу. На клиенте или на сервере нет сообщений об ошибках. Одна и та же страница может отображаться иногда, но не другие. Все страницы работают нормально в IE7, Firefox 3, Safari и Opera. Все страницы XHTML с этим метаэлементом:

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

Похоже, что я исправил проблему, добавив этот код PHP:

header('Content-type: text/html; charset=utf-8');

Я читал, что эта проблема может быть вызвана XHTML, кодированием, сжатием gzip или кэшированием, но никто не смог сделать резервную копию этих предположений.

Поскольку проблема была прерывистой, я не уверен, что мое решение действительно решило проблему.

Мой вопрос заключается в том, есть ли воспроизводимые способы отображения IE6 пустой страницы, когда другие браузеры отображают контент? Если так, то что вызывает это и что решает это?

6 ответов

Решение

Это проблема типа контента из IE. Он не знает, как обращаться с приложением / xhtml + xml.

Хотя вы пишете xhtml + xml, IE знает только text + html. Это будет будущее, прежде чем все агенты узнают xhtml + xml

измените свой метатег с типом контента на content="text/html;

У меня была похожая проблема, связанная с конкретным языком - только страницы с многобайтовыми символами не отображались в IE6 и IE7. Оказывается, в этих двух браузерах порядок метатега Content-Type и тега title очень важен. Таким образом, размещение тега (содержащего японские символы) после метатега решило проблему.

Похоже, ошибка #153 "Самозакрывающийся тег скрипта" в IE, который, как известно, вызывает пустые страницы.

Из-за ошибки IE вы НИКОГДА не можете кодировать следующее и ожидать, что он будет работать в IE.

<script src="...." />

(если тег самозакрывающийся, вас ждет мир боли)

Вместо этого всегда кодируйте как;

<script src="...."></script>

Вы должны обслуживать страницы с заголовком Content-Type как text/html для пользователей IE. Вам не нужно менять метатег, просто оставьте его как application/xhtml+xml (IE проигнорирует его).

Я получил эту ошибку из-за опечатки.

Я написал метатег:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />

Благодаря вам я исправил это:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

и у меня сейчас нет проблем.

Не уверен, что это точно соответствует вашему опыту. Это зависит от того, какая конкретная версия IE (включая пакеты обновления) используется.

Известной проблемой рендеринга в IE6 SP2 и IE7 (оба используют один и тот же механизм рендеринга) является существование потерянных тегов в вашем HTML. Это может быть потерянный тег div или скрипт.

<script language="javascript">    // no closing tag
alert('hello world');
<body>
hello world
</body>

Вышеприведенное хорошо выглядит в IE6 SP1 и Firefox, но вы увидите только пустую страницу в IE6 SP2 и IE7.

Есть некоторые другие теги, которые должны иметь отдельный закрывающий тег. Проверь что нибудь <div> а также <script> теги имеют окончание </script> или же <div> тег, а не просто закрывающая черта в конце открывающего тега. Еще один <textarea>, Вы должны иметь оба тега.

Вы можете проверить, происходит ли это на вашем сайте, если вы можете просмотреть исходный код своей пустой страницы и получить исходный HTML, даже если ваша страница пуста.

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