Dziś będzie trochę o czym innym niż się zajmuję na co dzień. Wielu moich znajomych wie, że ogólnie zajmuję się komputerami i to “trochę głębiej” niż zwykli ich użytkownicy. Równocześnie myślą, że zajmuję się projektowaniem i programowaniem www, a tak naprawdę nigdy w tą stronę nie szedłem. Z ich pytań jednym z najczęstszych jest “Czemu moja strona wszędzie działa dobrze a w ie8 nie? Co zrobić, żeby działała poprawnie?”
Teraz, niejako przez przypadek, natknąłem się na rozwiązanie. Chyba każdy user ie8 zwrócił uwagę na ikonkę:
image 
Jak nam głosi pomoc przy najechaniu na nią:
image 
Jest to ikona włączania trybu kompatybilności. Wtedy strony rzeczywiście są wyświetlane poprawnie (chociaż, niestety, nadal nie wszystkie). Jak wymusić jednak tryb zgodności? Przecież to głupie napisać na stronie “Jak używasz IE8 to kliknij na tryb zgodności” – to by świadczyło o nieznajomości IE8 przez developera strony.

Jak wymusić? Znacznikiem META.

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

I zamiast wersja wpisujemy co potrzebujemy:

EmulateIE8

"Quirks Mode" lub "Standards Compliance" – w zależności od użytego DTD (domyślnie)

EmulateIE7

"Quirks Mode" lub "Compatibility View" – w zależności od użytego DTD

edge

Najwyższy możliwy ewentualny przyszły tryb zgodności niezależnie od DTD (IE=8, IE=9, IE=10…)

Zamiast EmulateIEx czy edge możemy też wstawić:

8

Zawsze "Standards Compliance" bez względu na DTD

7

Zawsze "Compatibility View" bez względu na DTD

Przy takiej deklaracji nawet IE7 “cofnie się” do sposobu renderowania z IE6
5

Zawsze "Quirks Mode" bez względu na DTD

Co to jest DTD?
Według Wikipedystów:
DTD (ang. Document Type Definition), definicja typu dokumentu – rodzaj dokumentu definiujący formalną strukturę dokumentów HTML, XML, XHTML lub innych z rodziny SGML. Definicje DTD mogą być zawarte w pliku dokumentu, którego strukturę definiują, przeważnie jednak zapisane są w osobnym pliku tekstowym, co pozwala na zastosowanie tego samego DTD dla wielu dokumentów.

Za pomocą DTD zachowujemy któryś z wyżej wymienionych trybów zgodności:
Quirks mode (ang. tryb dziwactw), zwany też trybem osobliwości – sposób interpretacji kodu przez przeglądarki internetowe, zakładający wykorzystywanie przestarzałych konstrukcji językowych niezgodnych ze standardami W3C i IETF. Intencją jego stosowania jest zachowanie kompatybilności wstecznej względem leciwych stron internetowych. Więcej TU.

Compatibility View – tryb wstecznej zgodności ze standardami (kompatybilny z MSIE 7)

Standards Compliance – zupełna zgodność (MSIE 8)

Co zyskujemy dzięki takiemu podejściu do wyboru trybu renderowania strony?

  • pewność, że nasze strony nie „rozsypią się” w kolejnych wersjach przeglądarki
  • czas potrzebny na przetestowanie strony w nowej wersji przeglądarki i wprowadzenie koniecznych poprawek

A co jeśli na jednym serwerze mamy wiele stron a czasu niewiele by je przerobić? W konfiguracji naszego serwera (serwera, nie strony) www dodajemy odpowiedni nagłówek HTML:

X-UA-Compatible: IE=6;

Z tego co wiem, tryb najbardziej zgodny (edge) będzie w IE8 włączany także w przypadku natknięcia się na mało obecnie znany, prawidłowy DOCTYPE, w tym ten, który został przyjety dla HTML, czyli

<!DOCTYPE html>

w takim przypadku już nie będzie konieczności dodawania specjalnych nagłówków. Ale to dopiero przy rzeczywistym wejściu HTML5 w sieć. Na razie to wejście dość nieśmiałe.

Na podstawie doświadczeń własnych i strony kursu HTML, pojęcia z Wikipedii.