Internet Explorer 11 відключить "відображення сайтів інтрамережі в режимі сумісності" через метатег не працює


100

Я працюю над веб-сайтом інтранет протягом більше 6 місяців, якщо я використовував нижче doctypeтег html5 та мета-сумісність із краєм, щоб змусити Internet Explorer не імітувати старішу версію браузера, і це спрацювало нормально.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

Причина, що я робив це таким чином, полягає в тому, що місце, де я працюю, використовує налаштування політики, щоб увімкнути перегляд сумісності для всіх сайтів інтрамережі, і цей підхід із використанням EDGEналаштування працював в Internet Explorer 9.

Налаштування перегляду сумісності веб-сайтів в інтранетній мережі

Більше місяця тому я був оновлений до Internet Explorer 11, і сайт все ще працював так, як очікувалося.

Сьогодні це перестало працювати, як очікувалося, я не можу сказати точно, але я вважаю, що політика, яка змушує перегляд сумісності, не була включена в IE11 і тепер вона є ... а оскільки це було ввімкнено, метатег сумісності більше не є робити те, що очікується, і цей сайт запускається в режимі Enterprise, який імітує IE8.

Хтось знає, як це виправити та змусити використовувати IE11 на внутрішньомережевому сайті, коли виконується сумісність "Режим підприємства"? і його не можна відключити через налаштування браузера?

EDIT

Я щойно спробував додати користувацький заголовок у свій web.config, як пояснено у цій відповіді https://stackoverflow.com/a/18257208/98706

і це не спрацювало для мене, я все ще отримую повідомлення нижче на консолі панелі інструментів розробника

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

Це так, ніби версія 8 трактується як edge коли цей параметр сумісності внутрішньої мережі включений в IE11.

Цей пост: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode це добре пояснює, я ще не намагався встановити цей заголовок за допомогою коду та наші користувачі не мають доступу до зміни налаштувань свого браузера .. жодна з інших змін ще не працювала.

ОНОВЛЕННЯ

Будь ласка, дивіться мій коментар до цього повідомлення про те, чим відрізняється режим підприємства від режиму сумісності, оскільки це важливо.


Режим підприємства відрізняється від представлення про сумісність, будь ласка, перегляньте stackoverflow.com/a/26463309/98706 про способи його відключення, але в моєму випадку це не так просто, як можливість вимкнути його, я хотів би змінити його для конкретних сайтів інтрамережі використовуючи метатег, але це не спрацювало, я не намагався повторити, оскільки наші сайти тепер перебувають у списку.
Прайс

Відповіді:


93

Переконайтесь, що:

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

- це перший <meta>тег на вашій сторінці, інакше IE може не поважати його.

Крім того, проблема може полягати в тому, що IE використовує Enterprise Mode для цього веб-сайту:

  • У вашому запитанні було вказано, що на консолі показано: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • У цьому випадку вам може знадобитися відключити режим підприємства (або подібний ) або вимкнути його для цього веб-сайту з меню Інструменти в IE.
  • Однак у режимі Enterprise повинен теоретично бути замінений тегом X-UA-Compatible, але IE може мати помилку ...

Так, я вже робив це, оскільки, на жаль, не вийшло :(
Прайс

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

2
"Режим підприємства" та "Перегляд сумісності" різні, хоча і схожі. Навіть якщо поставлено галочку "Відображати сайти інтрамережі у представленні сумісності", тег X-UA-Compatible повинен перекрити це. Однак режим Enterprise може перекрити це ... чи бачите ви значок режиму підприємства ( media.askvg.com/articles/images5/… ), коли на вашому сайті?
горобець

1
Крім того, що це говорить, якщо натиснути F12 і подивитися на вкладку емуляції? Він повинен розповісти, чому використовується режим документа. Я думаю, що ви потрапляєте в режим Enterprise, а не в режим сумісності.
горобець

19
Це так! @ # $ Дратує, витрачаючи сотні тисяч годин веб-розробників по всьому світу.
Сем Уоткінс

19

Ця проблема, як правило, викликана тим, що URL-адреса веб-сайту / інтрамережі розміщується в одному з:

  • Список режимів сумісності
  • Інтранет-зона Internet Explorer
    (з увімкненими налаштуваннями відображення інтрамережі в режимі сумісності )
  • Список режимів підприємства

У корпоративних мережах ці параметри подання сумісності часто контролюються централізовано за допомогою групової політики . У вашому випадку винуватцем виявляється режим Enterprise .

IE 11 Корпоративний режим

На жаль, встановлення META X-UA-Compatible не скасує це.

Для кінцевих користувачів

Іноді єдиним способом переоцінити це для кінцевих користувачів є натискання клавіші F12 та зміна режиму документа на вкладці Емуляція . Однак цей параметр не є постійним і може відновитись після закриття Інструментів для розробників.

Ви також можете спробувати виключити свій сайт із зони інтранет. Але перелік доменів, що належать до зони Інтранету, зазвичай також контролюється груповою політикою, тому шанс цього функціонування невеликий.

Щоб переглянути список доменів, що належать до зони Інтранету, перейдіть до:

Інструменти -> Параметри Інтернету -> Безпека -> Сайти -> Додатково

Якщо список містить ваш піддомен і перемкнений у сірий колір, ви не зможете змінити представлення про сумісність, поки ваш адміністратор мережі не дозволить.

Вам дійсно потрібно зв’язатися з адміністратором мережі, щоб дозволити змінити параметри подання сумісності в груповій політиці.

Для мережевих адміністраторів

Завантаження веб-сайту із відкритими інструментами для розробників (F12) часто повідомляє про причину переходу IE в старіший режим.

Усі 3 згадані вище налаштування, як правило, контролюються за допомогою групової політики, хоча іноді їх можна змінити на комп'ютерах користувачів.

Якщо режим Enterprise є проблемою (як видається , має місце для оригінального плакату), наступні дві статті можуть бути корисні:


Я поширив вашу чудову відповідь ще деякими деталями, які я виявив під час останніх досліджень. Я сподіваюся, що це нормально.
Саймон Схід

8

Для тих, хто будує проект ASP.NET MVC, обов’язково додайте:

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

позначте на своїй сторінці "Макет (шаблон)". Я просто витратив дві години на налагодження та налаштування, лише зрозумівши, що я лише додав цей метатег у свої дочірні сторінки. Як тільки я додав його на свою сторінку розмітки, браузер завантажився в режимі EDGE ідеально.


Моя проблема полягала в тому, що я працював з новим режимом Enterprise в IE11, який змушує браузер наслідувати IE8. Це не те саме, що в режимі сумісності, і це те, що цей метатег використовується для перевизначення. Я правильно користувався цим.
Прайс

Мій коментар мав на меті допомогти іншим із тими ж симптомами, які створюють сайти в ASP.NET MVC. Я конкретно не звертався до вас.
Джейсон Марселл

Метатег буде працювати (для проблем із сумісним режимом, а не для проблем у режимі Enterprise) для сайтів, що не є .NET / MVC, занадто btw, це не характерно для ASP.NET
Dan Harris,

4

Позначена відповідь правильна. Однак, Прайси, вам слід буде продовжувати цю роботу разом із адміністраторами групи оголошень та настільних ПК. Вони зловживають списком сайтів IE11 Enterprise Mode. Microsoft НЕ планує використовувати його взагалі для всіх інтранет-сайтів в організації. Це може поширювати існуючий параметр "перенести всі інтрамережі в режим сумісності", що є основою просування корпоративного веб-сайту у всьому світі.

Він покликаний реалізовуватися як "Чорний список", із кількома сайтами, які фактично потребують застарілого режиму браузера, переліченого у списку "Enterprise Mode" із зазначенням вимог щодо надання. Всі інші сайти вашої організації потім звільняються, щоб використовувати Edge. Люди у вашій організації, які впровадили його з усіма включеними для початку інтранетними сайтами, повністю зрозуміли, як передбачається реалізація корпоративного режиму.


Так, вони, безумовно, повинні робити це, але я, на жаль, не маю жодної думки з цього питання, але це було порушено з ними.
Прайс

1

Питання трохи старе, але я просто вирішив дуже схожу проблему. У нас є кілька сайтів інтрамережі, включаючи один, за який я відповідаю, а для інших потрібен режим сумісності або вони порушуються. З цієї причини сайт зазначає IE за замовчуванням у режимі сумісності на сайтах інтрамережі. Я вдосконалюю власні речі і більше не потрібні; насправді деякі функції, які я намагаюся використовувати, не виглядають правильно в режимі compat. Я використовую мета-тег IE-Edge, як ви.

IE припускає, що веб-сайти без повнокваліфікованої адреси є інтранет, і діє відповідно. Зважаючи на це, я просто змінив прив’язки в IIS, щоб прослухати лише повністю кваліфіковану адресу, а потім створив фіктивний веб-сайт, який слухав некваліфіковану адресу. Друга перенаправляє весь трафік на повністю кваліфіковану адресу, змушуючи IE вважати, що це зовнішній сайт. На веб-сайті відображається вірно з полем Режим сумісності або без нього.


дивіться: stackoverflow.com/questions/2518256/…, якщо у вас є доступ до web.config.
fontophilic

Я вже бачив це питання раніше, але, мабуть, я неправильно прийняв рядок заголовка HTTP для рядка META і подумав, що вже спробував. Це добре спрацювало, як тільки я його випрямив. Дякую за те, що мені вказували на це.
Майк Андерсон

Я спробував застосувати той самий параметр EDGE сумісності у веб-конфігурації, і він не працював для мене, єдиний спосіб, коли я виявив, що це працює, - це вимагати, щоб наші конкретні веб-сайти були додані до білого списку, щоб вони ігнорувалися з нового Режим IE11 Enterprise, який, здається, дещо відрізняється від режиму сумісності. Це аж ніяк не приємне рішення для мене через петлі, через які я маю стрибати, щоб це робити щоразу.
Прайс

Схоже, ти пішов тією ж дорогою, що і я. Я мав зробити 2 речі. 1 було налаштуванням EDGE у тезі META сторінки. Ви можете зробити це в web.config (чи ні; я не знаю), але я це зробив на головній сторінці сайту. Іншим було додавання спеціального заголовка HTTP до web.config.
Майк Андерсон

1

Це стара проблема з якоюсь хорошою інформацією. Але я тільки що виявив, що за допомогою FQDN вимикається режим Compat в IE 9 - 11. Приклад. У мене є проблема
компати з http: // lrmstst01: 8080 / JavaWeb / login.do,
але проблеми відпадають від
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: .int є частиною наш внутрішній домен


Ці посилання недійсні. Вони використовуються як приклад URL-адреси з лише іменем комп'ютера проти одного з FQDN.
Дін П

2
Підказка: Primer.com існує саме для цієї мети
Basic

Це все ще проблема, і цей коментар нічого не додає до рішення.
Діана

0

Перемістіть його до зони довірених сайтів, додавши його до списку довірених сайтів або локальних налаштувань. Це перемістить його із зони Інтранету і не буде надано в Compat. Вид.


Ps Я знаю, що це працює, тому що це те, що ми робимо в моїй компанії для нових продуктів на базі браузера, які не написані тегами X-UA, щоб надати рендерінг так, як вони цього хочуть.
Грег К.

Враховуючи це, швидше за все, компанія, що налаштовує вашу відповідь, повинна бути застосована до машини кожного користувача, що навряд чи є ідеальним.
MattD

0

Додайте нижче властивість у файл web.config для сайтів IIS. Це працювало для мене на моїй інтрамережі в IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

Будь ласка, дивіться мої оновлення щодо квитка, у режимі підприємства та в режимі сумісності - це дві різні речі
Pricey

0

Я вирішив цю проблему шляхом перенаправлення користувача на FQDN сервера, на якому розміщена інтранет.

IE, ймовірно, використовує найгірший у світі алгоритм для виявлення "інтранетних" сайтів ... дійсно, вказавши сервер.domain.tld вирішує проблему для мене.

Так, ви правильно прочитали, IE виявляє сайти інтрамережі не за приватною IP-адресою, як це робив би будь-який розробник, який чув про TCP / IP, ні, "хост" частиною URL-адреси, якщо вона не має доменної частини, повинна бути внутрішнім.

Страшно знати, що розробники IE не розуміють найосновніших концепцій TCP / IP.

Зауважте, що це було у клієнта великого підприємства, примушуючи їх змінити групову групу для вас - це як намагатися перемістити Альпи на схід на 4 метри, не відбудеться.


IE, ймовірно, робить пошук DNS і знає IP з цього. Оскільки це MS, це, ймовірно, може робити AD, але DNS має більше сенсу.
smoore4

@SQLDBA негативний, якщо ви вказали IP, скажімо, 10.0.0.1, хост НЕ виявляється як "інтранет" на сайті ... нічого спільного з DNS, що ви маєте на увазі з AD? Ви маєте на увазі, що він підключається до AD і шукає хоста там? Не має сенсу, навіщо це робити? Потім знову Microsoft є причиною ™.
thecarpy

0

Про те, що це варто, у мене виникла проблема і в IE11:

  • я був не у режимі Enterprise.
  • Було встановлено прапорець "Відображати сайти інтрамережі у вигляді перегляду сумісності".
  • У мене було все <!DOCTYPE html> іIE=Edge параметри
  • Мета-заголовок справді був першим елементом у <head> елементі

Через деякий час я дізнався, що:

  • заголовок User Agent, надісланий серверу, був IE7 але ...
  • значення JavaScript було IE11!

Заголовок HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) але

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Тому я закінчив робити перевірку на стороні клієнта.

А BTW тим часом перевіряти агент користувача вже не рекомендується. Дивіться https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (але може бути хороший випадок)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.