Как Javascript может заставить IE 8 перезагрузить страницу в представлении совместимости? - PullRequest
4 голосов
/ 18 сентября 2009

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

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

Ответы [ 3 ]

2 голосов
/ 18 сентября 2009

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

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

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

1 голос
/ 18 сентября 2009

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

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

1 голос
/ 18 сентября 2009

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

в основном. на страницу можно добавить метатег

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

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

X-UA-Compatible: IE=EmulateIE7
...