Як змусити Internet Explorer відображатись у стандартному режимі, а НЕ у примхах?


74

Я кодую Frontend, який добре працює в стандартному режимі IE7 та стандартному режимі IE8.

Коли я запускаю Internet Explorer і завантажую сторінку як IE7, так і IE8, переходжу безпосередньо до режиму Quirks. Як я можу змусити IE7 і IE8 завжди завантажувати сторінку в стандартному режимі?

Наразі я не додав жодних спеціальних мета-тегів.

Дякую за допомогу

Редагувати: На даний момент мій тип документа та керівник виглядає так:

<!DOCTYPE html> 
<html lang="de"> 
<head> 
    <title>...</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="utf-8" />
    <script src="js/html5.js"></script> 

    (...)
</head>

7
Я знаю, що запізнився на вечірку, але ось коротке зауваження: якщо ви встановите режим візуалізації в інструментах розробника IE, цей режим буде дотримуватися наступного разу, коли ви завантажуватимете сторінку. Отже, якщо ви оберете режим Quirks, він буде дотримуватися цього режиму, доки ви не зміните його вручну або не закриєте вкладку. Тож насолоджуйтесь.
Матчу

1
Matchu, ваш коментар був для мене безцінним. Встановивши режим візуалізації вручну, я повністю зіпсував тестування! Дякую! :)
Брайан Беккет

Якщо ви не використовуєте заголовок http, це не завжди буде працювати stackoverflow.com/a/17258683/200442
Даніель Літтл

Відповіді:


87

Це спосіб бути абсолютно впевненим:

<!doctype html> <!-- html5 -->
<html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on -->
<head>
<meta http-equiv="x-ua-compatible" content="IE=Edge"/> 
<!-- as the **very** first line just after head-->
..
</head>

Причина:
Всякий раз, коли IE зустрічає щось, що суперечить, він повертається до "стандартного режиму IE 7", ігноруючи x-ua-compatible.

(Я знаю, що це відповідь на дуже давнє запитання, але я сам із цим боровся, і наведена вище схема - правильна відповідь. Вона працює весь час, щоразу)


@Sameer Alibhai, звичайно! Це так мається на увазі, що я забув це ;-) зараз виправлено.
davidkonrad

1
Це, на жаль, неправильно, веб-сервер у локальній мережі все одно ввімкне режим примх, коли у вас є всі ці речі. Це також IE = edge, а не просто Edge у вмісті мета-тегу.
mjaggard

3
@davidkonrad: так куди тоді потрапляє інформація про мову та конкретні класи? Мій html на даний момент виглядає так (приклад IE8): <html class="ie ie8 ie_old" lang="it-IT">Вибачте, не можу коментувати останню відповідь, ще не маю необхідної репутації ...
blu bla

1
@davidkonrad Вам дозволено мати атрибут lang на своєму тегу html, а також мати сумісний мета-тег!
andlrc

1
Була проблема лише сьогодні, коли веб-сайт був повністю знищений в IE9 без явних причин. Видалення всіх атрибутів з htmlтегу зробило свою справу! Дякую тисячу разів, застряг майже на 2 години, вже пробуючи все, що міг зробити!
Кевін Г.

33

На жаль, вони хочуть, щоб ми використовували тег, щоб їх браузер знав, що робити. Подивіться на цю документацію, вона говорить нам використовувати:

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

і це має зробити.


3
Це не виведе його з режиму примх або в режим примх, але змінить лише "режим емуляції". IE6 може працювати в режимі, який не є химерним (хоча це не означає, що він не дуже химерний!).

Якщо слід змусити річ завантажуватися в стандартному режимі.
Альфабраво,

Це працює для IE8. Однак IE7 все одно переходить у режим дивацтв першим.
лабіринт

IE7 - справжній біль. Добре знати таку поведінку, яку ти нам кажеш, лабіринт.
Альфабраво,

11
  1. Використання doctype html5 на початку сторінки.

    <!DOCTYPE html>

  2. Примусити IE використовувати найновіший режим візуалізації

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

  3. Якщо вашим цільовим браузером є ie8, перевірте сумісні налаштування в IE8

Я пишу це в блозі детально


10

Додавання правильної декларації типу документа та уникання XML-прологу повинно бути достатньо, щоб уникнути химерного режиму .


Це правильний спосіб досягти цього, повинен сказати. Якось не знаю, з IE ...
Альфабраво,

1
Це не працює з IE, якщо ви працюєте з веб-сервером у локальній мережі :-(
mjaggard

Це посилання на wikipediaрежим примх, врятувало мій день. Я боровся з цим останні 2 дні і насправді не знав, що відбувається зі мною в IE. Але мені цікаво, що коли я застосовував IE до стандартного режиму, він виглядає як Document Mode: IE7 standards. Як я можу це примуситиIE9 Standard
Мухаммад Ханнан

9

Я знаю, що це питання було задано понад 2 роки тому, але про це ще ніхто не згадував.

Найкращий метод - використовувати заголовок http

Додавання метатегу до заголовка не завжди працює, оскільки IE міг визначити режим перед його читанням. Найкращий спосіб переконатися, що IE завжди використовує стандартний режим, - це користувацький заголовок http.

Заголовок:

name: X-UA-Compatible  
value: IE=edge

Наприклад, у програмі .NET ви можете помістити це у файл web.config.

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

1
Не найкращий, оскільки MS заявляє, що "Якщо обидва [мета та заголовок] цих інструкцій надіслані, уподобання розробника (мета елемент) має перевагу над налаштуванням веб-сервера (заголовок HTTP)". msdn.microsoft.com/en-us/library/ff955275%28v=vs.85%29.aspx
Psychowood

1
Однак ви повинні бути обережними, тому що IE може вирішити значення, сумісне з X-UA, перш ніж досягти вашого тегу Meta. Ось чому верхній колонтитул все ще є найкращим підходом.
Деніел Літтл

2

Можливо, HTML5 Doctype створює у вас проблеми з цими старими браузерами. Це також може бути до чогось забавного, пов’язаного з HTML5 shiv.

Ви можете спробувати перейти на один із типів XHTML і змінити розмітку відповідно, принаймні тимчасово. Це може дозволити вам звузити проблему.

Чи ваш проект не ламається, коли ці IE переходять у режим дивацтв? Якщо ваш CSS викликає дивне відображення речей, можливо, варто попрацювати над CSS, щоб сайт виглядав однаково, навіть коли браузери перемикають режими.


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