Как Javascript может заставить IE 8 перезагрузить страницу в режиме совместимости?

StackOverflow https://stackoverflow.com/questions/1444944

Вопрос

Я тестирую довольно сложное веб-приложение на основе Javascript в Internet Explorer 8 в Windows Vista.После загрузки приложения IE переходит в режим браузера "стандарты" и режим документа "Стандарты IE 8".Во время работы приложения IE иногда перезагружает страницу и отображает сообщение, в котором говорится что-то вроде "Проблема с отображением (URL) привела к тому, что Internet Explorer перезагрузил страницу в режиме совместимости" (не точное сообщение, я использую неанглоязычную версию Vista).После перезагрузки браузер переходит в режим Quirks.

Отладка кода Javascript была бесполезным занятием, поскольку проблема не может быть достоверно воспроизведена или сужена, поэтому я был бы признателен за любую информацию о том, что могло вызвать такое поведение.

Это было полезно?

Решение

Должна быть проблема с разметкой, которую вы обслуживаете / создаете через innerHTML . Вот статья от команды IE, которая включает в себя сведения об автоматическом восстановлении IE из разметки, которые невозможно правильно проанализировать в режиме стандартов IE8:

  

... в новом механизме компоновки есть определенные пути к коду, в которых в случае возникновения ошибки процесс компоновки не может корректно восстановиться, и мы сохранили утверждения в отношении этих путей ... Мы усовершенствовали этот опыт в дальнейшем. выпустила версию IE8, восстановив «жесткие утверждения» макета с помощью Compatibility View. Другими словами, мы считаем, что показ страницы в том виде, в каком она была бы в IE7, обеспечивает лучший пользовательский интерфейс, чем отсутствие показа контента вообще.

Обратите внимание, что использование innerHTML вызывает анализатор HTML, поэтому он может вызвать эту проблему даже после загрузки страницы, если при подаче строки HTML он не может быть ни головой, ни хвостом.

Другие советы

проверьте здесь ..

в принципе.для каждой страницы вы можете добавить мета-тег

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

или для всего сайта добавьте это в заголовок:

X-UA-Compatible: IE=EmulateIE7

Похоже, Автоматическое восстановление после сбоя происходит в самом рендерере. Это ошибка в самом IE, а не в ваших скриптах, поэтому отладка действительно будет сложной.

Это происходит на всех установках IE8? IE8 обновлен с последними исправлениями? (Может ли это быть ненадежным сторонним расширением?)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top