Принуждение Internet Explorer 9 к использованию стандартного режима документа

Как заставить Internet Explorer 9 использовать стандартный режим документа? Я создал веб-сайт и обнаружил, что IE9 использует специальный режим для отображения страниц веб-сайта. Но я хочу использовать стандартный режим для рендеринга.


person MaxRecursion    schedule 11.06.2012    source источник


Ответы (9)


 <!doctype html>
 <meta http-equiv="X-UA-Compatible" content="IE=Edge">

Это заставляет каждую версию IE использовать свой стандартный режим, поэтому IE 9 будет использовать стандартный режим IE 9. (Если вместо этого вы хотите, чтобы более новые версии IE также специально использовали режим стандартов IE 9, вы бы заменили Edge на 9. Но трудно понять, зачем вам это нужно.)

Для пояснений см. http://hsivonen.iki.fi/doctype/#ie8 (это выглядит довольно запутанно, но это потому, что IE запутан в своем поведении).

person Jukka K. Korpela    schedule 11.06.2012
comment
Это не работает, если ваш контент загружается в iframe, а в родительском окне не указан тип документа. Далее следует применить режим причуд к iframe. Я ненавижу майкрософт. Также здесь есть ссылка на сайт Microsoft, посвященный этому ответу. msdn.microsoft.com/en-us /library/ie/hh920756(v=vs.85).aspx - person teewuane; 13.05.2013
comment
Это также не работает, если у вас есть контент, кроме объявления DOCTYPE перед тегом HTML. - person crush; 20.08.2013
comment
Этот ответ был правильным некоторое время назад, но теперь, когда вышел IE10, он будет отображаться в этом и в будущем будет отображать все, что есть в новейшем IE. См. ответ SuperDuck ниже, чтобы явно отображать в IE9. - person DrCord; 31.08.2013
comment
Это не влияет на мою 64-битную копию IE9 (версия 9.0.8112.16421). (HTML1115: X-UA-совместимый метатег ('IE=8') игнорируется, поскольку режим документа уже завершен, независимо от того, где находится метатег в документе) - person 15ee8f99-57ff-4f92-890c-b56153; 09.10.2013
comment
... должен вызвать Response.AddHeader() (в этом случае застрял с классическим ASP) или что-то подобное. Кто знает, что будет с IE10, IE9 на чьем-то компьютере, кроме моего, или еще где-нибудь... - person 15ee8f99-57ff-4f92-890c-b56153; 09.10.2013

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

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

person Ty Petrice    schedule 06.03.2014
comment
Мне всегда интересно, что происходит, когда в какой-то момент требуется другой метатег, который также должен быть размещен перед всеми остальными... - person JensG; 23.11.2015
comment
Вы действительно хотите разместить метакодировку как можно ближе к началу документа. Я предполагаю, что оба могут поместиться в достаточно небольшом количестве байтов, чтобы работать с реальными пользовательскими агентами. - person Mikko Rantalainen; 27.11.2018

В этой теме есть что-то очень важное, что было затронуто, но не объяснено полностью. HTML-подход (добавление метатега в заголовок) стабильно работает только на необработанных HTML-страницах или очень простых серверных страницах. Мой сайт представляет собой очень сложный сайт, управляемый сервером, с мастер-страницами, темами и множеством сторонних элементов управления и т. д. Я обнаружил, что некоторые из этих элементов управления программно добавляли свои собственные теги в окончательный HTML-код, которые передавались в браузера в начале тега заголовка. Это эффективно сделало метатеги HTML бесполезными.

Ну, если вы не можете победить их, присоединяйтесь к ним. Единственное решение, которое сработало для меня, - это сделать то же самое в событии предварительного рендеринга моих мастер-страниц как таковых:

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    Dim MetaTag As HtmlMeta = New HtmlMeta()
    MetaTag.Attributes("http-equiv") = "Content-Type"
    MetaTag.Attributes("content") = "text/html; charset=utf-8;"
    Page.Header.Controls.AddAt(0, MetaTag)

    MetaTag = New HtmlMeta()
    MetaTag.Attributes("http-equiv") = "X-UA-Compatible"
    MetaTag.Attributes("content") = "IE=9,chrome=1"
    Page.Header.Controls.AddAt(0, MetaTag)
End Sub

Это VB.NET, но тот же подход будет работать для любой серверной технологии. Пока вы убедитесь, что это последнее, что делается прямо перед отображением страницы.

person David Esquivel    schedule 20.08.2013
comment
У меня была та же проблема, я использую DNN на своем сайте (ewwww), и это было единственным решением проблемы, все остальные предполагали, что вы имеете прямой контроль над тегом ‹head› в HTML. - person Dan Rayson; 24.04.2015

поместите тип документа в качестве первой строки вашего html-документа

<!DOCTYPE html>

вы можете найти подробное объяснение совместимости документов Internet Explorer здесь: Определение совместимости документов

person inancsevinc    schedule 11.06.2012
comment
@inancsevinc: На моей странице aspx уже был ‹!DOCTYPE html›, и при отображении она все еще использовала режим документа IE7. Так что в этом смысле ваше предложение само по себе НЕ решило мою проблему. Хитрость для меня заключалась в том, чтобы добавить ‹meta http-equiv=X-UA-Compatible content=IE=Edge› непосредственно под ним, как предложил Юкка К. Корпела. Я ценю, что ваше предложение может быть действительным, я просто не понимаю, почему оно само по себе не заставило бы IE перейти в режим IE9 для меня. - person leoinlios; 19.03.2013

Чтобы предотвратить режим причуд, определите «тип документа», например:

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

Чтобы IE отображал страницу в режиме документа IE9:

<meta http-equiv="x-ua-compatible" content="IE=9">

Обратите внимание, что "IE=edge" заставит IE отображать страницу в самом последнем режиме документа, а не в режиме документа IE9.

person SuperDuck    schedule 18.07.2013

Убедитесь, что вы приняли во внимание, что добавление этого тега,

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

может разрешить только совместимость с последними версиями. Все зависит от ваших библиотек

person eoinDeveloper    schedule 14.11.2013

Пробовал альтернативным методом:

Нажмите клавишу F12. Затем справа в раскрывающемся меню выберите Internet Explorer версии 9.

Вот оно, и это сработало для меня.

person Madhu Sareen    schedule 26.10.2017

Убедитесь, что вы используете правильный тип документа.

eg.

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

или просто

<!doctype html>

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

person Moin Zaman    schedule 11.06.2012

Я столкнулся с проблемой, когда моя главная страница index.jsp содержит строку ниже, но хотя рендеринг в IE был неправильным. Нашел проблему и добавил код во все файлы, которые я включил в index.jsp. Ура! это сработало.

Поэтому вам нужно добавить приведенный ниже код во все файлы, которые вы включаете на страницу, иначе он не будет работать.

    <!doctype html>
    <head>
      <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    </head>
person KarthikaSrinivasan    schedule 22.05.2019