Чому IE9 переходить на режим сумісності на моєму веб-сайті?


197

Я щойно встановив бета-версію IE9 і на певному створеному нами сайті (HTML5) IE9 переходить до режиму сумісності, якщо я вручну не скажу це. Я спробував видалити кілька частин веб-сайту, але жодних змін не було. У тому числі видалення всіх CSS включає. На якомусь іншому веб-сайті у мене це просто чудово.

Крім того, не встановлюйте це вручну, тому що тоді IE9 запам'ятовує налаштування користувача, і ви не можете повернути його до автоматичного (або, принаймні, я не знайшов, як, навіть через приватний перегляд та спорожнення кешу)

Все одно. Веб-сайт, на якому він переходить до режиму сумісності: http://alancesatwar.com/guide/ Такий,
де він відображається правильно: http://geuze.name/basement/ (я не можу розмістити більше 1 гіперпосилання)

Обидва використовують одне і те ж doctype і і все. Ці сайти мають багато спільного (крім зовнішнього вигляду), використовуючи той самий основний шаблон (кодування, метатеги, doctype і той же javascript)

Було б чудово, якби хтось відповів на мене! Веб-сайт HTML5, який відображається в режимі IE7, дуже ... кульгавий.


5
Поясніть, будь ласка, "стрибки в режим сумісності"? Якщо ви бачите оновлення сторінки та повітряну кулю, яка говорить про те, що IE оновив цю сторінку в «Перегляді сумісності» через проблему, це означає, що ви знайшли помилку IE під назвою «жорстке затвердження», що схоже на збій у механізмі візуалізації. . Нам цікаво знайти та виправити їх; подайте помилку на сторінку connect.microsoft.com/ie . Дякую!
EricLaw

Відповіді:


263

Для мене працює у документі IE9 documentMode.

Без X-UA-Compatibleзаголовка / мета для встановлення явного documentMode ви отримаєте режим на основі:

  • чи раніше користувач натискав кнопку "Перегляд сумісності" у цьому домені;
  • можливо також, чи це сталося автоматично через те, що якийсь інший вміст на веб-сайті призводить до того, що візуалізатор IE8 / 9 вийде з ладу і повернеться до старого рендерінгу;
  • чи вирішив користувач перевести всі сайти у режим перегляду сумісності за замовчуванням;
  • чи вважає IE, що веб-сайт знаходиться у вашій інтрамережі, і тому він за замовчуванням переглядає сумісність;
  • чи перебуває розглянутий сайт у власному списку веб-сайтів Microsoft, які потребують перегляду сумісності.

Ви можете змінити ці налаштування через "Інструменти -> Параметри подання сумісності" у меню IE. Звичайно, це меню зараз приховано приховано, тому ви його не побачите, поки не натиснете Alt.

Як автор сайту, якщо ви впевнені, що ваш сайт відповідає стандартам (добре відображається в інших веб-переглядачах і використовує нюхання функцій, щоб вирішити, які обхідні способи браузера використовувати), пропоную використовувати:

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

або заголовка HTTP:

X-UA-Compatible: IE=Edge

щоб отримати останній рендер, незалежно від версії IE.


79
Важливе зауваження: якщо IE 9 налаштований завжди показувати сайти Інтранета в режимі сумісності, ні метатег, ні заголовок HTTP не замінять це.
Яків

29
Як зазначає Яків, IE може за замовчуванням відображати всі локальні / інтранетні сайти, які знаходяться в режимі compat. Натисніть alt -> Інструменти Порівняння параметрів Перегляньте налаштування та переконайтесь, що у вас немає цього поля.
Cory Mawhorter

30
Метатег працював для мене лише тоді, коли я ставлю його відразу після <head> (див. Також відповідь нижче). Коли я відклав його далі в <head> елемент, він не працював (у мене все-таки вирвана сторінка).
Boris van Schooten

13
@Jacob: Це такий спосіб введення в оману. Так, ви будете знаходитись у режимі сумісності браузера, і виходу немає. Але ви все одно можете використовувати заголовок HTTP, щоб встановити режим документа, який коли-небудь версія IE працює найкраще для вашого сайту. IE = Edge завжди повинен надавати вам найновіший механізм візуалізації. Тож навіть якщо ви технічно перебуваєте в режимі сумісності, ви можете відображати свої сторінки як у звичайному режимі. Виправте мене, якщо я помиляюся, але принаймні наш сайт Інтранету працює саме так (навіть якщо встановлено прапорець "Відображати сайти інтранет в режимі сумісності").
mkataja

7
@BorisvanSchooten: Я не знаю, чи це причина, але <meta>теги повинні бути в межах перших 512 байт обробленого файлу HTML. Я кажу "оброблений", тому що там ви можете мати всі види PHP, але важливо, що надається код. Я дістався, де я розміщую всі свої коментарі щодо <meta>нижче <meta>тегів, щоб я не порушував вимоги.
подвійнийJ

33

я кладу

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

перше, що після

<head>

(Я десь читав, не можу згадати)

Я не міг повірити, що це спрацювало !!


Ви повинні закрити вкладку та відкрити нову вкладку, ви це спробували?
Зеб

1
Він сказав "зробив" не "не";)
Натан JB

14
+1, це дуже цінна примітка . Якщо у вас є <script>s всередині <head>цього metaтвердження, воно (IE = край) буде проігноровано.
jakub.g

22

Щоб змусити IE відображати в режимі стандартів IE9, ви повинні використовувати

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

Деякі умови можуть спричинити перехід IE9 до режимів сумісності. За замовчуванням це може статися на сайтах інтрамережі.


Він працює на іншому веб-сайті. Так це не повинно бути. Крім того, цей метатег є злим, оскільки вам доведеться оновлювати його вручну щоразу, коли з’являється нова версія IE.
Рене

2
Вибачте, я не можу виправити вашу проблему. Однак я завжди редагував свою відповідь на використання IE=edge, яка викликає використання найновішого наявного двигуна завжди.
Делан Азабані

Ваше припущення невірно. У демонстраційних версіях вказано X-UA-Compatible, щоб запобігти показ IE кнопки "Перегляд сумісності", оскільки якщо користувач натисне на нього, вміст сайту не працює належним чином.
EricLaw

@ReneGeuze, ти неправильно зрозумів Edge завжди посилається на останню версію IE.
neoswf

@DelanAzabani мій інтранет-портал перейшов у режим сумісності, навіть я додав метатег, як ви запропонували. підкажіть, будь ласка, як це могло б вирішити та залишитися на прикладі стандартного режиму - IE 8, IE 8 сумісність, тоді я хочу лише IE 8.
dsi

6

Я опублікував цей коментар на окремій потоці StackOverflow, але подумав, що варто повторити тут:

Для нашого власного додатка ASP.Net додавання тегу "X-UA-Compatible" на веб-сторінці, в web.config або в коді позаду абсолютно не змінило.

Тільки річ , яка працювала для нас було вручну відключити цю настройку в IE8:

введіть тут опис зображення

(Зітхає)

Ця проблема, здається, трапляється лише з IE8 та IE9 на сайтах інтранет. Зовнішні веб-сайти будуть добре працювати і використовувати правильну версію IE8 / 9, але для внутрішніх веб-сайтів IE9 раптом вирішує, що це насправді IE7, і не має підтримки HTML 5.

Ні, я теж не зовсім розумію цю логіку.

Моє неохоче рішення вирішило перевірити, чи підтримує браузер HTML 5 (створивши полотно та перевіривши, чи воно дійсне), та відобразити це повідомлення користувачеві, якщо воно недійсне:

введіть тут опис зображення

Це не особливо зручно для користувачів, але здається, що користувач вимкне цей набридливий параметр, здається, єдиний спосіб дозволити їм правильно запускати внутрішні веб-додатки HTML 5.

Або змусити користувачів використовувати Chrome. ;-)


1

На сайті за адресою http://www.HTML-5.com/index.html є мета-тег X-UA-сумісний, але він все ще переходить у «Перегляд сумісності», як зазначено піктограмою «порвана сторінка» в адресному рядку. Як отримати параметр меню, щоб змусити IE 9 (остаточна версія 9.0.8112.16421) відображати сторінку в режимі стандартів? Я спробував правою кнопкою миші натиснути цю піктограму зірваної сторінки, а також трюк клавіші "Alt", щоб відобразити додаткові параметри меню, згадані Рене Геузе, але це не вийшло.


4
Видаліть умовний коментар IE навколо мета. Ви обслуговуєте сторінку як application/xhtml+xml, тому використовуються правила розбору XML; XML не підтримує умовних коментарів. У будь-якому випадку це не має ніякого сенсу; браузер повинен вибрати режим, перш ніж він зможе вирішити, які умовні коментарі слід інтерпретувати.
бобінець

1

На відміну від більш сучасних веб-сайтів, якщо ви використовуєте умовні заяви на тезі html відповідно до котлован, це з певних причин призведе до того, що 9 є за замовчуванням до режиму сумісності. Виправлення тут полягає в тому, щоб перенести свої умовні висловлювання з тега html та додати їх до тегу body, іншими словами, із розділу заголовка. Таким чином, ви все ще можете використовувати ці класи в таблиці стилів для націлювання на старі веб-переглядачі.


0

Мені добре виглядає:

alt текст

Ви впевнені, що не були в налаштуваннях глобально чи щось? Це чиста установка бета-версії в Windows 7. Інструменти розробника повідомляють, що сторінка за замовчуванням відповідає стандартному режиму IE9.


У мене було більше 1 повідомлення про цю помилку. Хоча, можливо, це має відношення до базового режиму ( alsionsatwar.com ), але він також переносить усі субрежими в режим сумісності. Але тоді у мене виникає питання, що в корені веб-сайту змушує IE переводити веб-сайт у режим сумісності? Тож, можливо, принаймні цей посібник закодований правильно. Я тоді сподіваюся.
Рене

@Rene Странно, я щойно відтворив це, натиснувши посилання Посібник із домашньої сторінки. Але це сталося лише один раз, і після кількох спроб мені ще належить відтворити це, тільки що один раз
Yi Jiang

0

Нещодавно мені довелося вирішити це питання, і ось що я зробив:

Перш за все, це рішення полягає в налаштуванні сервера Apache.

Друга основна думка полягає в тому, що в IE9 є помилка, що означає, що метатег не працюватиме, замість цього рішення спробуйте це

  • знайти / відкрити свій httpd.conf
  • коментувати / або додати наступний рядок

    LoadModule headers_module modules/mod_headers.so
  • додайте наступні рядки

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
  • зберегти / перезапустити сервер Apache,

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