Подтвердить что ты не робот

IE9 постоянно использует режим документов IE7, независимо от того, что я пытаюсь

Это сводит меня с ума.

Независимо от того, что я пытаюсь, Internet Explorer переключается на режим документов IE7 Standard Document. Я попытался отключить мой код до нуля, чтобы попытаться заставить его вести себя, используя бета-версию HTML5 и HTML5 reset (чей собственный сайт переходит в режим Quirks).

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

Это то, что у меня есть; что мне не хватает?

<!doctype html>

<!--[if IE 7 ]> <html class="ie7> <![endif]-->
<!--[if IE 8 ]> <html class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title></title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <p>Test text</p>        
</body>
</html>

ИЗМЕНИТЬ

У меня есть решение, найденное по предложению ниже. Предложение не получилось, но это привело меня к ответу. Это может быть не 100% подходящим для всех, поскольку он накладывает класс на тег body, а не html, но он работает для меня и, похоже, работает для IE.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>
4b9b3361

Ответ 1

У меня есть решение, найденное с помощью более раннего предложения. Предложение не получилось, но это привело меня к ответу. Это может быть не 100% подходящим для всех, поскольку он налагает класс на тег body, а не html, но он работает для меня и, похоже, работает для IE.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" href="css/style.css">
</head>
<!--[if IE 7 ]> <body class="ie7> <![endif]-->
<!--[if IE 8 ]> <body class="ie8> <![endif]-->
<!--[if gt IE 8]><!--><body><!--<![endif]-->
<p>Test text</p>        
</body>
</html>

ИЗМЕНИТЬ

Я фактически прекратил использовать вышеописанное и теперь добавляю свои IE-специфические классы к элементу html, как это предлагается в HTML5BP.

Также обратите внимание, что вы можете удалить chrome=1 из метатега, поскольку Chrome Frame вскоре будет убит. Не повредить этому, хотя для тех редких случаев, когда кто-то все еще использует его.

Еще одна вещь, на которую я не думаю упоминал, - это состояние того, что, вероятно, является самым раздражающим параметром в IE - "Показывать сайты интрасети в представлении совместимости". Если вы запускаете тестовый сервер с таким именем, как http://mytestserver:8888, IE будет считать его узлом интрасети и режимами переключения независимо от того, что вы делаете в своем документе.

Этот параметр включен в моей политике группы компаний, так как наша древняя интрасеть sharepoint фактически опирается на него. Отлично подходит для старого дерьма, но ужасно для нового материала, который на самом деле будет придерживаться стандартов.

Переключите f *** er в Tools > Compatibility View Settings и будьте готовы переключиться на него вручную, если у вас есть какие-либо устаревшие сайты.

Ответ 2

from этот поток

Метатег X-UA-совместимый должен появляться сразу после названия в элементе. Никакие другие метатеги, ссылки css и js-скрипты не могут быть размещены перед ним.

Ответ 3

Иногда IE плохо себя ведет на сайтах интрасети, заставляя их работать в режиме совместимости независимо от строки <meta> в голове. Тем не менее, вы можете заставить сервер отправить заголовок для работы с грубой силой IE, добавив следующее в веб-конфигурацию:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

Ответ 5

Сохраните

<!doctype html>

- первая строка источника страницы, а метатег X-UA-совместимый должен быть тегом tilte рядом с соседним братом.

<meta charset="utf-8">
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Ответ 6

У меня также была эта проблема с ie10, заставляющей режим стандартов IE7 для сайтов на localhost. Добавление/использование виртуального хоста, включая точку в его имени (local.x), решило проблему.

Ответ 7

Ссылка, которую Stuart опубликовала, работала для меня, поскольку она связана с локальным веб-сайтом, установленным для режима совместимости. Как только я удалил сайт интрасети из списка режимов совместимости, страница перешла в соответствующий режим IE = 9 в соответствии с метатегом.

Ответ 8

Я использовал следующее, чтобы исправить эту проблему, когда IE8 выполнял рендеринг в режиме документа IE7 Standards несмотря на все, что я пробовал. Добавьте это непосредственно перед объявлением doctype:

<!--[if IE ]><![endif]-->

Таким образом, полученный HTML будет выглядеть примерно так:

<!--[if IE ]><![endif]-->
<!doctype html>
<!--[if IE 7]><html class="lt-ie8"><![endif]-->
<!--[if IE 8]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->
<head>
    <title>Page title here</title>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

Кто-то еще должен будет прокомментировать, почему это похоже на работу - для меня это тайна.