Недопонимать из


Я не могу реализовать реальный смысл мета http-equiv=" X-UA-совместимый "контент=" IE=edge.

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

2) если пользователь явно скажет, что его IE (например, IE9) хочет открыть страницу браузера как некоторая предыдущая версия IE (например, IE8), этот мета-тег предотвратит это?

3) Что делать, если у меня есть IE7 или IE8 и эта страница имеет мета-тег? Эта страница будет открыта в IE7 или IE8 в зависимости от того, какая версия браузера у меня уже есть как последняя на моем компьютере.

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

5 3

5 ответов:

"1) Если у некоторых пользователей есть какая-то версия IE и он пытается открыть конкретную страницу, страница будет открыта в той версии IE, которую пользователь имеет (последняя версия). Я не понимаю, зачем нам нужен этот тег, чтобы поддерживать это?"

IE 8* и более поздние версии поставляются с несколькими встроенными движками рендеринга. Какой из них IE выберет для конкретной страницы, зависит от нескольких факторов. Иногда он по умолчанию переходит в более старый режим, поэтому даже если вы используете IE10, он может открыть конкретная страница, скажем, в представлении совместимости IE7.

Если вы используете стандартный HTML5 doctype на своей странице, например <!DOCTYPE html>, то вы думаете, что вам не придется беспокоиться, и в интернете это более или менее верно. Но по причинам, которые не имеют смысла ни для кого за пределами Microsoft, Если IE открывает страницу в интрасети, он по умолчанию использует более старое представление совместимости, даже если указан HTML5 doctype.

Использование тега <META>, который вы упомянули, говорит IE всегда использовать самый последний ("edge") движок рендеринга, который у него есть.

"2) если пользователь явно скажет, что его IE (например, IE9) хочет открыть страницу браузера как некоторую предыдущую версию IE (например, IE8), будет ли этот мета-тег препятствовать этому?"

Нет. Пользователь по-прежнему может использовать встроенные средства разработки для изменения режима документа.

"3) Что делать, если у меня есть IE7 или IE8 и эта страница имеет мета-тег? Эта страница будет открыта в IE7 или IE8 в зависимости от версии браузера I уже есть как последний на моем компьютере."

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

*или я имею в виду IE 7 и более поздние версии? Я забыл.

См. документацию Microsoft:

Http://msdn.microsoft.com/en-us/library/jj676915 (v=против 85).aspx

Примечание: режим Edge предназначен только для тестирования; не используйте его в рабочей среде.

Потому что он заставляет все страницы открываться в стандартном режиме, независимо от того, из версии Internet Explorer, вы можете быть соблазнены, чтобы использовать это для всех страниц, просматриваемых с помощью Internet Explorer. Не делайте этого, так как X-UA-Compatible заголовок поддерживается только начиная с Windows Internet Explorer 8.

Это означает, что он предназначен только для быстрого тестирования последней версии IE для веб-сайта, который в настоящее время ограничен определенной версией.

Чтобы постоянно использовать последнюю версию, используйте тип документа HTML5: <!DOCTYPE html>.
Смотрите во введении к статье:

В большинстве случаев мы рекомендуем веб-сайтам использовать тип документа HTML5 поддерживать самое широкое разнообразие установленных и возникающих стандарты, а также самый широкий спектр веб-браузеров.

Редактировать: Я только что заметил этот ответ в другом посте SO. Это означает, что если пользователь по какой-то причине запускает IE в режиме совместимости для страницы, вы переопределите это, установив X-UA-Compatible=EDGE. Это означает, что если вы знаете, что ваша страница будет отображаться лучше всего с использованием новейших стандартов, вы можете заставить IE работать в пограничном режиме, даже если пользователь активировал режим совместимости. Видеть другой ответ для получения подробной информации о различных способах активации режима совместимости.

В качестве дополнительного эффекта на это, IE также скроет кнопку compatibilty в адресной строке, когда yo установили X-UA-Compatible=EDGE.

Вы можете явно указать браузерам IE, чтобы они использовали свой последний доступный механизм рендеринга, используя мета-тег. Это также не позволяет IE открывать режим Quirks во время рендеринга страницы.

Проверьте это: http://technowide.net/2013/06/21/forcing-ie-browsers-to-behave-properly/

Живите с его бессмысленностью...

Как говорят другие, не использование этого тега вызывает (по крайней мере, в IE9) значок представления совместимости в адресной строке (символический значок сломанной страницы, рядом с перезагрузкой и остановкой). Также на идеально W3C-валидирующих <!DOCTYPE html> html5-страницах. При виде этого значка пользователи могут нажать на него. И это действительно приводит к режиму причуд, поэтому расчет ширины заполнения меняется на старые времена, и ваша страница выглядит плохо. (Молодец, M$, это действительно так помогает...)

Таким образом, этот тег помогает подавить его.

google.com также использует флаг edge (хотя они решительно выступают за "правильный" html5, да?) nytimes.com не использует флаг edge. И-бум-вот флаг совместимости.

рассмотрим подробнее сайты, продвигающие html5... У html5boilerplate.com нет значка, нет мета-тега, но, следовательно, он находится в заголовке http.

Короче говоря: похоже, что нет хорошего способа обойти это. Не-userfacing, superficious / ugly флаг лучше, чем что-либо, с которым сталкивается пользователь, рискуя сделать вашу страницу хуже или кажущейся недействительной (как конечный пользователь, я бы сделал вывод, когда бы ни предлагалось какое-либо "представление совместимости") .

Вы можете добавить это к своему .htacces

<IfModule mod_headers.c>
    Header set X-UA-Compatible "IE=edge"
    # `mod_headers` can't match based on the content-type, however, we only
    # want to send this header for HTML pages and not for the other resources
    <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff|xml|xpi)$">
        Header unset X-UA-Compatible
    </FilesMatch>
</IfModule>