Как запретить IE9 отображать сайты интрасети в режиме совместимости

IE9 имеет странную проблему, когда он отображает сайты интрасети в режиме совместимости.

кто-нибудь знает способ, как предотвратить это от случаться?

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

4 ответов


после исчерпывающего поиска я узнал, как успешно предотвратить рендеринг сайта интрасети в режиме совместимости в IE9 on этот блог:

от Тесмонд блог

в IE9 есть 2 причуды, которые могут привести к тому, что режим совместимости останется в силе. X-UA-совместимый мета-элемент должен быть первым мета-элементом в головном разделе. Вы не можете иметь условные операторы IE перед X-UA-совместимым метаэлементом. Это средство что если вы используете замечательный шаблон HTML5 пола Айриша, то в интрасети с настройками IE9 по умолчанию ваш сайт будет отображаться в режиме совместимости. Вам нужно изменить начало шаблона следующим образом: -

<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

в:

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">

после ответа @novicePrgrmr, кажется, есть обходной путь для IE9 загрузки интранетов в IE7-режиме. Хотя это все еще запускает режим совместимости, я нашел небольшую модификацию разметка шаблона HTML5 пола Айриша по крайней мере, позволяет IE9 отображать интранеты в стандартах IE9:

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
</head>
<!--[if lt IE 7]>   <body class="home lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>      <body class="home lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>      <body class="home lt-ie9"> <![endif]-->
<!--[if IE 9]>      <body class="home lt-ie10"><![endif]-->
<!--[if gt IE 9]><!--> <body class="home"> <!--<![endif]-->

    <p>content</p>

</body>
</html>

Это все еще действительный HTML, и существующий IE-специфичный CSS должен по-прежнему работать нормально, при условии, что вы используете IE .lt-ie, а не html.lt-ie.


Это можно сделать, добавив простой мета-тег

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

другой способ сделать это-добавить этот код к вашему.файл htaccess!

# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------

# Force the latest IE version, in various cases when it may fall back to IE7 mode
#  github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=Edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" >
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

Если вы можете добавить код на главную страницу, вы можете просто добавить это:

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

в заголовок вашего сайта.

(вы также можете использовать <meta http-equiv="X-UA-Compatible" content="IE=9"> заставить IE9-визуализатор) Это заставит IE9 отображать в стандартном режиме.

другой способ-использовать другой doctype: Поместите это в верхнюю часть кода:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">