Režimy dokumentů a prohlížeče Internet Explorer 8

Když Microsoft začal plánovat Internet Explorer 8, narazil na zajímavý problém. Byli ochotni připustit, že Internet Explorer měl implementační chyby jak ve vykreslování, tak ve skriptování. Poté, co přiznali, že měli problém, který se běžně nazývá „nerozbíjejte internet“. Microsoft neměl žádný způsob, jak zjistit, kolik webů bylo závislých na chybách implementace, aby správně fungovaly. Jejich konečné řešení problému bylo zajímavé:Internet Explorer 8 mohl běžet v řadě různých režimů. Naprostý počet možných režimů je trochu skličující, ale v zásadě se dělí na dva typy:režim dokumentu a režim prohlížeče.

Režim dokumentu

Režim dokumentu stránky určuje, ke kterým funkcím má přístup. To znamená, že existuje specifická úroveň podpory CSS, konkrétní počet funkcí dostupných pro skriptování prostřednictvím JavaScriptu a specifický způsob zacházení s doctypes. Existují tři různé režimy dokumentu:

  • Internet Explorer 5 – vykresluje stránku v režimu quirks IE7 (známém také jako režim IE5). Nové funkce v IE8 nejsou k dispozici.
  • Internet Explorer 7 – vykreslí stránku v režimu standardů IE7. Nové funkce v IE8 nejsou k dispozici.
  • Internet Explorer 8 – vykreslí stránku v režimu standardů IE8. V IE8 jsou k dispozici nové funkce, takže máte přístup k Selectors API, více selektorům CSS 2, některým funkcím CSS 3, HTML 5 atd. V podstatě získáte vše, co IE8 nabízí.

Koncept režimu dokumentu je velmi důležitý pro pochopení toho, jak Internet Explorer 8 funguje.

Vynucení režimu dokumentu

Konkrétní režim dokumentu můžete vynutit pomocí X-UA-Compatible HTTP záhlaví nebo pomocí <meta> ekvivalent značky:

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

V tomto poli je několik různých možných hodnot pro verzi IE a není nutné je mapovat na tři režimy dokumentu:

  • Edge – vždy přepněte dokument do posledního dostupného režimu dokumentu. Doctype je ignorován. Pro Internet Explorer 8 to neustále vynucuje režim dokumentu podle standardů IE8. Při používání tohoto postupu buďte opatrní, protože jakmile vyjde Internet Explorer 9, přepne stránku do režimu standardů IE9.
  • EmulateIE8 – pokud je přítomen doctype, nastavte režim dokumentu na standardy IE8 a jinak nastavte režim dokumentu na IE5.
  • EmulateIE7 – pokud je přítomen doctype, nastavte režim dokumentu na standardy IE7 a jinak nastavte režim dokumentu na IE5.
  • 8 – vynutit režim dokumentu na standardy IE8. Doctype je ignorován.
  • 7 – vynutit režim dokumentu na standardy IE7. Doctype je ignorován.
  • 5 – vynutit režim dokumentu na IE5. Doctype je ignorován.

Chcete-li například, aby se režim dokumentu choval jako v aplikaci Internet Explorer 7, můžete použít následující:

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

Zatímco vynutit režim standardů IE7 bez ohledu na typ dokumentu, použijte toto:

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

Nemusíte mít X-UA-Compatible pole na stránkách. Pokud není k dispozici, výchozí hodnota je EmulateIE8 .

Režim zjišťování dokumentu

Režim dokumentu pro danou stránku můžete určit pomocí document.documentMode vlastnost novou funkci v aplikaci Internet Explorer 8, která vrací buď 5, 7 nebo 8:

var mode = document.documentMode;

Použití této vlastnosti vám může napovědět, jak se bude stránka chovat. Tato vlastnost je dostupná ve všech režimech dokumentu.

Režim prohlížeče

Existují tři režimy prohlížeče:Internet Explorer 8, kompatibilita s Internet Explorer 8 a Internet Explorer 7. Tyto režimy ovlivňují stránku mnoha způsoby, zejména změnou režimu dokumentu a řetězce user-agent. Ve výchozím nastavení je režim prohlížeče nastaven na Internet Explorer 8.

Režim Internet Explorer 8

Ve výchozím nastavení prohlížeč běží v režimu Internet Explorer 8. Režim dokumentu je určen jako X-UA-Compatible je nastavena na EmulateIE8. Řetězec user-agent pro prohlížeč zahrnuje verzi aplikace Internet Explorer i verzi Trident (vykreslovací modul). Například na svém počítači vidím toto:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Většina stránek skončí v režimu prohlížeče Internet Explorer 8.

Režim kompatibility aplikace Internet Explorer 8

Když koncový uživatel klepne na tlačítko zobrazení kompatibility vedle tlačítka aktualizace, režim prohlížeče se změní na kompatibilitu s Internet Explorer 8. Režim kompatibility IE8 je určen k emulaci Internet Exploreru 7, a proto je režim dokumentu určen jako X-UA-Compatible je nastavena na EmulateIE7. Řetězec user-agent pro prohlížeč změní Internet Explorer verze 7, ale ponechá verzi Trident (vykreslovací modul). Například na svém počítači vidím toto:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Změna řetězce user-agent má zajistit, že jakýkoli kód závislý na sniffování user-agent bude nadále fungovat, jako by běžel v aplikaci Internet Explorer 7. Ponechání verze Trident umožňuje vývojářům příležitost zjistit, že se ve skutečnosti jedná o spuštěný Internet Explorer 8 v režimu kompatibility.

Režim Internet Explorer 7

Režim Internet Explorer 7 je nejkurióznější ze všech režimů prohlížeče, protože se zdá být volbou pouze v nástrojích IE Developer Tools. V dokumentaci je uvedeno, že se to používá k testování vašeho webu ve skutečné instanci aplikace Internet Explorer 7, nikoli v aplikaci Internet Explorer 8 spuštěné v režimu kompatibility. Internet Explorer 7 určuje režim dokumentu jako X-UA-Compatible je nastavena na EmulateIE7. Navíc tento režim zcela ignoruje X-UA-Compatible a tak neexistuje způsob, jak ručně změnit režim dokumentu (Internet Explorer 7 nerespektoval X-UA-Compatible buď). To znamená, že na rozdíl od ostatních režimů prohlížeče režim Internet Explorer 7 nikdy nemůže mít režim dokumentu podle standardů IE8. Dále se změní řetězec user-agent, takže verze Trident již není k dispozici. Tady je na mé krabici:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Zdá se, že neexistuje žádný jiný způsob, jak a koncový uživatel může spustit režim Internet Explorer 7. Zdá se tedy, že se jedná pouze o pohodlný nástroj pro vývojáře, který nás osvobozuje od nutnosti, a zdá se tedy, že jde o nástroj používaný primárně pro vývojáře

Přehled

Internet Explorer 8 má některé výkonné a matoucí funkce, které se týkají vykreslovacího a spouštěcího jádra. Režimy dokumentu se používají k určení, které funkce jsou na stránce dostupné, a to včetně funkcí CSS a funkcí JavaScriptu, které jsou povoleny a dostupné. Prohlížeči můžete sdělit, jak chcete, aby byl režim dokumentu určován, zadáním hodnoty X-UA-Compatible .

Režimy prohlížeče mění způsob určování režimu dokumentu, když je X-UA-Compatible není specifikováno. Změní také řetězec user-agent, aby nedošlo k poškození snifferů user-agent. Ve volné přírodě uvidíte pouze režim Internet Explorer 8 a režim kompatibility Internet Explorer 8; Zdá se, že režim aplikace Internet Explorer 7 je určen pouze pro vývojáře.