Как отключить кнопку режима совместимости в IE9? - PullRequest
10 голосов
/ 30 июля 2011

Я не могу отключить кнопку режима IE Compatibility в IE9.

Моя голова и доктип выглядят так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--[if lte IE 8]> 
  <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-en" xml:lang="en-en" class="ie8">
 <![endif]-->
<!--[if IE 9]> 
  <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-en" xml:lang="en-en" class="ie9">
<![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-en" xml:lang="en-en">
<!--<![endif]-->
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="description" content="meta content here" />
  </head>
  <body>
    <!-- page content here //-->
  </body>
</html>

Как отключить кнопку режима совместимости в IE9?

Я думал, что сделал свое исследование. Я применил все виды резервных решений, чтобы все нормально отображалось в каждом IE от 7 до 9 и выше.

Клиент жалуется на режим совместимости, который при активации портит макет. Есть ли способ отключить эту кнопку?

Ответы [ 5 ]

18 голосов
/ 17 мая 2012
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

По состоянию на январь 2014 года Google больше не поддерживает Chrome Frame, поэтому хромировать = 1 деталь не требуется

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

Режим "край" заставляет стандарты (или последний механизм рендеринга) в IE, а "хром" - для Chrome Frame.

Дополнительная информация доступна здесь:

5 голосов
/ 15 мая 2013

Я использовал условные комментарии вверху страницы, чтобы встроить класс ie в зависимости от версии. (Например:)

<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->

В результате, хотя я устанавливал метатег X-UA-Compatible, кнопка «Режим совместимости» все еще отображалась в IE.

Чтобы исправить, мне пришлось переместить условные комментарии вниз страницы и использовать JS для применения классов ie. Кнопка «Совместимость» больше не отображается в IE при просмотре моего сайта.

<html lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=8; IE=9; IE=10; IE=EDGE; chrome=1">
  <head>
  <body>
     <!-- ..Other content... -->
  <script type="text/javascript">
   window.flagAsIE = function(version) {
     var cls = document.body.parentElement.getAttribute('class');
     document.body.parentElement.setAttribute('class', "ie ie" + version + " " + cls);
   };
  </script>

  <!--[if lt IE 7 ]><script type='text/javascript'>flagAsIE('6');</script><![endif]-->
  <!--[if IE 7 ]><script type='text/javascript'>flagAsIE('7');</script><![endif]-->
 </body>
</html>
4 голосов
/ 30 июля 2011
1 голос
/ 25 апреля 2013

Я обнаружил, что именно условные комментарии вызывали появление кнопки.Удаление их и использование обнаружения функций вместо добавления моих HTML-классов решило эту проблему.Никакое количество операций с X-UA-Compatible не приведет к удалению кнопки.

Я использовал этот набор has.js определяет:

if (has("css-border-radius") && !has("input-attr-placeholder")) {
    html.className += ' ie9';
}

if (!has("css-border-radius") && !has("input-attr-placeholder")) {
    html.className += ' lt-ie9';
}

if (!has("css-box-sizing")) {
    html.className += ' ie7';
}
0 голосов
/ 15 января 2013

Проблема в том, что где-то в вашем js-коде вы используете сниффинг-код браузера, такой как document.all, window.ActiveXObject, navigatror.userAgent, attachEvent, detachEvent и т. Д.

Замените все на код обнаружения функции, используя jquery.support и кнопка исчезнет.

...