Я працюю для клієнта, який примушує режим сумісності на всіх сайтах інтрамережі. Мені було цікаво, чи є тег, який я можу вставити у свій HTML, який вимикає режим сумісності.
Я працюю для клієнта, який примушує режим сумісності на всіх сайтах інтрамережі. Мені було цікаво, чи є тег, який я можу вставити у свій HTML, який вимикає режим сумісності.
Відповіді:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
На пов'язаній сторінці MSDN:
Режим Edge повідомляє Windows Internet Explorer відображати вміст у найвищому доступному режимі, що фактично порушує парадигму "блокування". У Internet Explorer 8 це еквівалентно режиму IE8. Якщо (гіпотетичний) майбутній випуск Internet Explorer підтримував більш високий режим сумісності, сторінки, встановлені в режимі Edge, відображатимуться у найвищому режимі, підтримуваному цією версією; однак ці самі сторінки все одно з'являтимуться в режимі IE8 під час перегляду в Internet Explorer 8.
Однак режим "край" не рекомендується використовувати у виробництві:
Веб-розробникам рекомендується обмежувати використання режиму Edge для тестування сторінок та інших невиробничих цілей із-за можливих несподіваних результатів візуалізації вмісту сторінки в майбутніх версіях Windows Internet Explorer.
Я, чесно кажучи, не зовсім розумію, чому. Але відповідно до цього, найкращий шлях на даний момент - це використання IE=8
.
IE=10
на власних сайтах. Якщо ви протестували свій сайт в IE10 (версія для попереднього перегляду), це безпечно використовувати; в іншому випадку ви можете IE=9
зараз дотримуватися .
Tools->Compatibility View Settings
та перевіривши Показувати всі веб-сайти в Погляді сумісності. Щоб вирішити проблему, я повинен повернути заголовок у відповіді HTTP:X-UA-Compatible: IE=edge
Після багатогодинного усунення несправностей із цим матеріалом ... Ось декілька швидких моментів, які допомогли нам у X-UA-Compatible
документах: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
Використання <meta http-equiv="X-UA-Compatible" content=" _______ " />
У Standard User Agent режими (НЕ-емулювати них) ігнорувати <!DOCTYPE>
директиви в вашої сторінки і рендер на основі стандартів , підтримуваних цією версією IE (наприклад, IE=8
буде краще кориться рознос кордону таблиці і деякі псевдо - селектори , ніж IE=7
).
Беручи до уваги, що режими Emulate вказують IE виконувати будь-які <!DOCTYPE>
директиви на вашій сторінці, перетворюючи стандартний режим на основі вибраної вами версії, а режим базується на основіIE=5
Можливі значення для content
атрибута:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Якщо ви працюєте зі сторінкою в зоні інтранет, ви можете виявити, що IE9, незалежно від того, чим займаєтесь, переходить у режим IE7 Compat.
Це пов’язано з налаштуваннями в настройках сумісності IE, в яких сказано, що всі сайти Інтранета повинні працювати в режимі сумісності. Ви можете зняти цей прапорець за допомогою групової політики (або просто скасуйте її в IE) або ви можете встановити наступне:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Це працює (як це детально описано в інших відповідях), але спочатку може не виглядати так: потрібно заздалегідь оголосити таблиці стилів . Якщо цього немає, це ігнорується.
Я вірю, що це зробить трюк:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Як пропонується у цій відповіді на відповідне запитання, режим "край" може бути встановлений у файлі Web.Config. Це дозволить застосувати його до всіх HTML, повернених із програми, без необхідності вставляти його на окремі сторінки:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Цей самий крок також можна виконати, змінивши "заголовки відповідей HTTP" за допомогою IIS Manager для сервера IIS, цілого веб-сайту чи конкретних програм.
Рішення метатегів не працювало для нас, але встановлення його у заголовку відповіді зробило:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
властивості, stackoverflow.com/a/22059516/368691 . Майте на увазі, що Chrome Frame вийшов на пенсію. blog.chromium.org/2013/06/retiring-chrome-frame.html
Ще кілька записок до цієї теми, засновані на моєму недавньому досвіді. Університет, в якому я працюю, випускає ноутбуки з IE 8, встановленим в режимі сумісності для всіх Інтранетних Сайтів. Я спробував додати метатег, щоб відключити цей режим для сторінок, що обслуговуються моїм сайтом, але IE постійно ігнорував цей тег. Як згадував Ленс у своєму дописі, додавання заголовка відповіді вирішило цю проблему. Ось так я встановив заголовок на основі методу котлового шаблону HTML5:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Для того, щоб цей заголовок був фактично надісланий, ви повинні переконатися, що у Apache увімкнено mod_headers. Якщо ви хочете, щоб увімкнути цей мод, покладіть це на сторінку, на якій може працювати php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
IE8 за замовчуванням застосовує стандартний режим для intERnet та режим примх для intRAnet. Мета-тег HTML ігнорується, якщо ви встановили тип doctype на перехід xhtml. Рішення полягає в тому, щоб додати заголовок HTTP. Це працювало на нас. Тепер наш інтранет-сайт змушує IE8 відтворювати додаток у стандартному режимі.
Додано до PageInit базового класу сторінки (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
довідка: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Це пов’язано з налаштуваннями в настройках сумісності IE, в яких сказано, що всі сайти Інтранета повинні працювати в режимі сумісності. Ви можете зняти цей прапорець за допомогою групової політики (або просто скасуйте її в IE) або ви можете встановити наступне:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Мабуть, неможливо змінити параметри подання сумісності як групову політику, але це може бути змінено в реєстрі, цей метатег добре працює для мене, мені довелося зробити необхідний атрибут як частину HTML-форми , він працював у хромі та firefox, але не IE.
Ось приємна картина того, які браузери підтримують кожен окремий html 5 елемент.
Зауважте один загальний знаменник Google Chrome, він підтримує все. Сподіваюся, це допоможе
Вставте як перший пункт під тегом.
Це змушує IE відображати сторінку у фізичній версії IE, і він ігнорує браузер "Налаштування режиму". Це можна встановити в інструментах для розробників, спробуйте змінити його на більш стару версію IE, щоб перевірити, це слід ігнорувати і сторінка повинна виглядати точно так само.
Якщо у вас є доступ до сервера, найнадійніший спосіб зробити це - зробити це на самому сервері, в IIS. Увійдіть до заголовків відповідей IIS HTTP. Додати ім'я: X-UA-сумісне
значення: IE = edge Це перекриє ваш браузер і ваш код.
Якщо ви хочете, щоб кожна окрема веб-сторінка завантажувала вибраний вміст і використовує asp.net. Просто застосуйте його як перший тег під тегом заголовка в меню Перегляди> спільно> Layout.cshtml
просто порада