Определение схемы режима документа IE8 неверно или я что-то упустил? - PullRequest
2 голосов
/ 27 июня 2011

Я немного растерялся из-за того, как IE8 определяет режим документа.У меня есть противоречия.

Настройка

Вот как выглядит сгенерированный заголовок веб-страницы на моем веб-сайте, обратите внимание на тип документа:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head">
    <meta id="IE8" http-equiv="X-UA-Compatible" content="IE=8" />
    ...

Я использую meta http-экв. установлен в X-UA-Compatible , чтобы заставить его отображаться в «стандартном режиме», потому что этот сайт был сделан так.Сайт находится на другой машине в локальной сети компании ( 10.1.xx ).

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

Результаты:

Если в настройках совместимости ничего не отмечено и не указано в списке, агент пользователя:

Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) [ ok ]

Если установлен флажок «Отображать все веб-сайты в режиме совместимости»:

Mozilla / 4.0 (совместимо; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) [ согласованный, но не ожидаемый ]

Когдапроверяется только «Отображение сайтов интрасети в режиме совместимости»:

Mozilla / 4.0 (совместимо; MSIE 8.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR 2.0.50727;.СЕТЬCLR 3.5.30729;.NET CLR 3.0.30729;.NET4.0C;.NET4.0E) [ не в порядке ]

Когда URL добавлен в список «Веб-сайты, добавленные вами в представление совместимости»:

Mozilla / 4.0 (совместимо; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C;.NET4.0E) [ связный, но не ожидаемый ]

Согласно следующей записи в блоге IE диаграмма, если метатег X-UA-Compatibleравно присутствует и значение равно IE = 8 , для рендерера установлено значение " Стандартный режим ".Как только что описано, это не так.Meta всегда был IE = 8, но пользовательский агент изменился.Диаграмма учитывает настройки представления совместимости после мета-проверки X-UA-Compatible.В моем случае это выглядит наоборот.Диаграмма неверна?

Вопросы:

  • Почему пользовательский агент msie 8.0, когда установлен флажок «Отображать сайты интрасети в режиме совместимости» ?!(это из-за моей мета? Действительно ли http://10.1.x.x/ рассматривается как веб-сайт интрасети?)

  • Почему пользовательский агент - msie 7.0, когда "Показать все сайты в представлении совместимости"" проверено???(это переопределить мою мету? но не в соответствии с диаграммой)

  • Почему пользовательский агент - msie 7.0, когда сайт добавлен в список совместимости?

Согласно диаграмме, мой тип документа попадает в категорию " Почти стандарт ".Кажется, есть лучшая мета для форсирования стандартного режима IE8, но в соответствии с типом документа:

<meta id="IE8" http-equiv="X-UA-Compatible" content="**IE=EmulateIE8**" />

Лучше использовать его или тот, который я использую в настоящее время (принудительно IE = 8)?Кажется, что почти стандартный режим - это в точности стандартный режим с тонким изменением рендеринга изображений в таблице, хорошо, но ... какой из них выбрать?

Затем снова на диаграмме упоминается "IE = Emulate8", но в этой статье говорится о "IE = EmulateIE8", похоже, что более поздняя версия является правильной в соответствии с документацией http-эквивалент .

Есть ли способопределить (на стороне клиента / в сети), находится ли IE в «режиме почти стандартов» или «режиме стандартов»?

Несколько ссылок, на которые стоит обратить внимание:

http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

http://blogs.msdn.com/b/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx

http://msdn.microsoft.com/en-us/library/ms533876(VS.85).aspx

http://msdn.microsoft.com/fr-fr/library/cc288325(VS.85).aspx

http://blog.strictly -software.com / 2009/03 / режимы обнаружения-т.е.-8-совместимости-whtml

http://phrogz.net/ie8-intranet-compatibility-view

http://hsivonen.iki.fi/doctype/ -> http://hsivonen.iki.fi/doctype/ie8-mode.png

javascript:alert(navigator.userAgent)
javascript:alert(document.compatMode);
javascript:alert(document.documentMode);

1 Ответ

0 голосов
/ 03 февраля 2012

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

IE Dev tools

Не полагайтесь на строку User Agent для определения механизма рендеринга.

...