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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

В этом потоке есть что-то очень важное, что было затронуто, но не полностью объяснено. 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, но такой же подход будет работать для любой серверной технологии. Пока вы убедитесь, что это последнее, что делается до того, как страница будет отображаться.

Ответ 5

Чтобы предотвратить режим quirks, определите "doctype", например:

<!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.

Ответ 6

Учтите, что вы добавляете этот тег,

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

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

Ответ 7

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

например.

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

или просто

<!doctype html>

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

Ответ 8

Я попробовал альтернативный метод:

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

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

Ответ 9

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

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

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