Ошибка режима совместимости IE - PullRequest
7 голосов
/ 25 февраля 2011

Вот код в верхней части моей страницы:

<!DOCTYPE html>

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

Я использую условный код комментария от Пол Айриш , чтобы упростить обнаружение и решение проблем IE,однако этот код, похоже, сам по себе вызывает проблему.Проблема в том, что использование кода условного комментария переводит мою страницу в режим совместимости с IE8, несмотря на то, что я явно объявляю ie=edge в соответствии с правилами MSDN .

Удаление кода условного комментариявокруг тега html исправляет ошибку и позволяет IE8 рендерить в стандартном режиме;однако я бы предпочел найти решение, которое позволило бы мне сохранить условный код и при этом заставить IE отображать в режиме соответствия стандартам.Имейте в виду, что у меня нет файла .htaccess для использования, так как этот сайт использует установку windows / asp.

Ответы [ 5 ]

7 голосов
/ 29 января 2013

Пустой комментарий в начале исправляет это.

<!--[if IE_NEEDS_THIS]><![endif]-->
<!DOCTYPE HTML>
<!--[if lt IE 9]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html class="gt-ie8"><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>--</title>

Но не помещайте условный комментарий вокруг метатега. IE10 впадет в причуды.

2 голосов
/ 17 апреля 2011

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

Это работает в любом случае, и тогда это действительно HTML5!

<!–[if IE]><![endif]–>
 <!DOCTYPE html>
 <html lang="de">
 <head>

<title></title>
 <!–[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><![endif]–>

В этой ситуации, как IE8 и IE9, но не content="IE=Edge,Chrome"

Так что, пожалуйста, только content="IE-Edge"

0 голосов
/ 15 июля 2015

Верхний ответ - неработающая ссылка.

Эти проблемы Boilerplate помогли мне:

https://github.com/h5bp/html5-boilerplate/issues/125

https://github.com/h5bp/html5-boilerplate/issues/1187

Фрагмент кода getsetbro правильный, но эти ссылки предоставят больше информации, так какпочему.

0 голосов
/ 25 февраля 2011

Вы сказали:

Имейте в виду, что у меня нет файла .htaccess для использования, так как этот сайт использует настройки windows / asp.

IПредположим, это означает, что вы могли бы обойти проблему, указав X-UA-Compatible в качестве заголовка ответа HTTP, а не в качестве метатега.

Если вы используете Classic ASP, вы можете использоватьэто в верхней части вашего файла и избавьтесь от метатега:
(я полагаю, вы имели в виду классический ASP, основанный на отсутствии в вашем профиле связанных с ASP.NET вещей)

Response.AddHeader "X-UA-Compatible", "IE=edge,chrome=1"

Этот ответ основан на слишком большом количестве предположений, которые мне нравятся, поэтому он может просто не сработать.

Также этот вопрос может помочь:

мета-тег режима IE8

0 голосов
/ 25 февраля 2011
...