Как запретить 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">