2012-01-25 1 views
32

У меня есть приложение, которое в некоторых случаях приводит к IE8 всплывающее сообщение о совместимости и перезагрузки в режиме Compat:Какие конкретные причины заставляют IE8 запускать режим совместимости?

проблема отображения вызвана Internet Explorer, чтобы обновить веб-страницу с помощью зрения совместимости

Это редко, и, насколько я могу судить, не происходит из-за мета-тегов. Это происходит как ответ на действие пользователя, которое изменяет DOM. Это та же проблема, что и: https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view, но мой вопрос: какие вещи вызывают это, как помощь в его исправлении.

Другими словами, увидеть этот сайт thesitewizard.com, где третья причина режима совместимости в IE8 описывается как:

и, в некоторых случаях, для некоторых других непостижимой, незарегистрированной причине на страницах, которые (или, как минимум, это в кандидате на выпуск 1).

И вопрос: Какие непостижимые, недокументированные причины?

+0

Я никогда не видел, чтобы страница с проверкой HTML «прыгала» в режим совместимости. Но как может кто-нибудь помочь вам, не увидев ваше приложение? В противном случае ответы здесь будут просто случайной строкой догадок. – Sparky

+2

Пожалуйста, смотрите название вопроса. Я ищу, какие типы вещей вызывают это, чтобы помочь в отладке. Что касается никогда не видя этого, нажмите ссылку суперпользователя в вопросе, есть скриншот об этом. – mtyson

+0

Я прочитал название и понял, что вы ищете. Однако вопрос, который не может привести к определенному правильному ответу или решению, скорее всего, будет закрыт. – Sparky

ответ

7

После долгого сеанса отладки (используя старые школьные оповещения, чтобы точно определить, что терпела неудачу, где), это, казалось бы, innocous линии йота манипуляций была виновник:

document.getElementById("literal"+varValue).style.display = "none"; 

Там не было никакой ошибки здесь, и элемент был (т. е. это не нулевой указатель садового разнообразия).

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

setTimeout(function(){ 
      var layoutEl = document.getElementById("literal"+varValue); 
      if (layoutEl) 
       layoutEl.style.display = "none"; 
     },10) 
+2

Для меня тоже попытка скрыть определенный элемент заставила IE8 обновить страницу, используя представление совместимости. Я использую jQuery, хотя и использую [.hide()] (http://api.jquery.com/hide) и используя [продолжительность] (http://api.jquery.com/hide/#hide -duration-complete) сделал трюк, например '$ ('# ID'). Скрыть (1)'. – WynandB

5

Следующая информация исходит из статьи MSDN «Controlling default rendering».


Следует иметь в виду, что определенные условия, такие как перечисленные здесь, могут заставить Internet Explorer отображать страницы в режиме совместимости документов, отличном от указанного на веб-странице.

  • Доступ к совместимости включен для страницы.
  • Страница загружается в зону интрасети, а Internet Explorer настроен на использование представления совместимости для страниц, загруженных из зоны Интернета.
  • Страница загружается из локальной файловой системы пользователя (что означает, что страница загружена в зоне интрасети), а Internet Explorer настроен на использование представления совместимости для страниц, загруженных из зоны Интернета.
  • Internet Explorer настроен для отображения всех веб-сайтов в режиме совместимости.
  • Internet Explorer настроен на использование списка просмотра совместимости, который определяет набор веб-сайтов, которые всегда отображаются в представлении совместимости.
  • Инструменты разработчика используются для переопределения параметров, указанных на веб-странице.
  • На веб-странице обнаружена ошибка макета страницы, и Internet Explorer настроен на автоматическое восстановление после таких ошибок путем повторного открытия страницы в представлении совместимости.
  • На странице содержится метка Веб, которая направляет ее для загрузки в определенную зону.

Эти ссылки предоставляют дополнительную информацию, которая описывает, как Internet Explorer определяет соответствующий режим документа для веб-страницы:

5

Я знаю, что вы Allready ответ твой, но сегодня я тоже искал то, что было причинно ng IE8 для запуска режима совместимости. Я искал код JavaScript, CSS (: первый,: последний, и т.д.), но оказалось, что некоторый встроенный стиль:

макс высота в сочетании с переливом ..

Так что это (также) вызывает совместимость режим в IE8:

style="overflow:scroll;max-height:200px;" 

И это не так, так что решить мою проблему:

style="overflow:scroll;height:200px;" 

Edit: Я думаю, что это связано : IE8 overflow:auto with max-height

+0

Спасибо - не забудьте перепроверить вопрос, если вы считаете его хорошим – mtyson

+0

Я удалил элементы с переполнением на странице, которая была вынуждена загружать изображение совместимости, и страница загружалась нормально. Проблема найдена. – Pete

2

Я знаю, что это старый вопрос, но я решил, что добавлю что-то, что я только что натолкнулся. У меня возникла проблема, когда режим совместимости был принудительным, и я не мог отслеживать источник. Я вручную вывел страницу из режима совместимости и заметил, что некоторые символы не появляются. Кончилось тем, что маркированный список, который использует пользовательский символ на псевдо-элемент:

li:before { 
    content: '\25B6'; 
} 

Как быстро исправить, я в конечном итоге просто переписав это для IE менее 9:

.lt-ie9 li:before { 
    content: ''; 
} 

This article дал мне идею поиска неверных персонажей. Надеюсь, это поможет кому-то, если они наткнутся на подобную проблему!