определить, почему страница отображается в режиме совместимости? - PullRequest
7 голосов
/ 23 июня 2010

У меня проблема с макетом из-за того, что содержащаяся страница отображается в режиме совместимости в IE8. Есть ли способ определить, что приводит к переходу IE8 в режим совместимости для конкретной страницы?

Согласно документам Microsoft, следующие условия могут привести к отображению страницы в режиме совместимости (http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx):

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

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

Ответы [ 2 ]

4 голосов
/ 23 июня 2010

Проверьте, есть ли у вас теги , переводящие IE в режим совместимости.

Вы можете заставить его отображать как IE8 (полностью совместимый с CSS 2.1), если хотите:

<meta http-equiv="X-UA-Compatible" content="IE=8"/>
0 голосов
/ 26 марта 2015

Предполагая, что у вас есть скрытый элемент с идентификатором compat-warning:

Javascript w / jQuery:

$(function(){
    function showCompatWarning() {
        $('#compat-warning')
            .css('display','block')
            .css('height','auto')
            .show();
    }
    var tridentOffset = navigator.appVersion.indexOf('Trident/');
    if ( tridentOffset === -1 ) return;
    var jscriptVersion = 0;
    /*@cc_on @*/
    /*@if (@_jscript) jscriptVersion = @_jscript_version ; @*/;
    /*@end @*/
    var tridentVersion = parseInt(navigator.appVersion.substr(tridentOffset+8),10);
    var guessIEVersion = tridentVersion + 4;
    if (( document.documentMode && jscriptVersion && jscriptVersion < 10 && jscriptVersion !== document.documentMode ) ||
        ( document.compatMode && document.compatMode === 'BackCompat') ||
        ( document.documentMode && document.documentMode < 10 && document.documentMode != guessIEVersion ))
        showCompatWarning();
});

Обнаружение и предупреждения, ваши первые и последние строки защиты от адской совместимости.

...