Szybki hack dla projektów niekompatybilnych z IE8

Szybka poprawka dla starszych projektów WWW, które nie są jeszcze całkowicie kompatybilne z Internet Explorerem 8. Rozwiązanie doraźne, ale oszczędza bólu przy hackowaniu kodu dla najnowszego Misia, dla którego w trybie standardów wyrażenia typu expressions już nie działają ;-)

Wersja z .htaccess

Najszybciej i najprościej będzie skorzystać z pliku .htaccess (jeśli mamy taką możliwość). Poniższa reguła uwzględnia różne odmiany skryptów PHP i HTML. Nie ma potrzeby doklepywania żadnego dodatkowego markupu. Alternatywnie można wysłać odpowiednie nagłówki za pomocą skryptu (o ile dokument jest generowany dynamicznie).

# Force Compatibility View in IE8
<IfModule mod_headers.c>
	<FilesMatch "\.(php[4-6]?|[sx]?html?)$">
		Header set X-UA-Compatible "IE=EmulateIE7"
	</FilesMatch>
</IfModule>

Wersja ze znacznikiem META

Nie wygląda najlepiej, ale składniowo jest poprawnie, dlatego też kod przechodzi walidację. Do sekcji HEAD dokumentu HTML należy dopisać poniższą linijkę. Niestety, kod nie zadziała, jeśli umieścimy go w komentarzu warunkowym dla IE (z bliżej nieznanych mi przyczyn).

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

Zapomniałbym dodać: po zastosowaniu jednej z powyższych sztuczek, w IE8 zniknie przycisk umożliwiający ręczne przełączanie trybu kompatybilności z IE7. Dla końcowego użytkownika jest to praktycznie niezauważalne.

Ku pamięci ;-)

Zamieniłem tryb z IE=7 na IE=EmulateIE7. Teoretycznie drugi zapis jest bardziej elastyczny – IE na podstawie deklaracji typu dokumentu zdecyduje, czy zastosować quiks mode czy standards mode. W przypadku tego pierwszego tryb standardów jest wymuszany zawsze. Dla większości poprawnie napisanych stron nie będzie miało to większego znaczenia. Więcej informacji.

Komentarze

  1. Crozin pisze:

    Tak się zastanawiam… czy jest sens robić cokolwiek pod przeglądarkę, która jeszcze nie wyszła? :)

  2. Wasacz pisze:

    A o czym jest ten wpis, jeśli nie o tym? ;>

    Osobiście uważam, że nie ma sensu poprawiać starych projektów dla tej garstki ludzi, która używa niestabilnej jeszcze wersji IE8. Więc taki hack jest jak znalazł.

  3. Paolo pisze:

    A ja zastanawiam się, czy jest sens tworzyć przeglądarkę, która nie jest z niczym kompatybilna – tak tylko żeby było?

  4. Wasacz pisze:

    Paolo – słusznie, i jeszcze bestialsko wycięli expressions. Nic tylko inwestować w żyletki.

  5. Crozin pisze:

    A ma ktoś może gdzieś pod ręką linka do tego czego IE8 (nie)obsługuje (zależy, która lista będzie krótsza). ;)

  6. Paolo pisze:

    W IE podoba mi się tylko design – taki nieprzesadzony i po prostu widać spod czyjej ręki wyszedł (M$).
    Tak poza tym to wiele osób nie patrzy jak działają strony, czy trzymają się „kupy” i miały więcej dostępnych funkcji – oby internet działał i tak do wiosny…

  7. Paolo pisze:

    Crozin:

    Raz

    Najlepszy dowód na potęgę IE

  8. BTM pisze:

    @Paolo: mniam, Onet źródłem informacji na jakikolwiek temat. Brawo ;>

    Jak ja teraz zrobię listę 2.4k stron nie kompatybilnych z Operą / Firefoxem / TU_WSTAW_TO_CZEGO_UŻYWASZ w wersji Beta Sreta i Kometa 0.666 to też zaczną pisać na Onecie?

  9. Paolo pisze:

    @BTM: jak lubią :) Link znaleziony jakiś czas temu na jednym z for mobilnych (całkiem fajnym forum zresztą).

  10. dikamilo pisze:

    Dobre przynajmniej jest to że jak się robi stronę to na IE7 i 8 jakoś to jeszcze hula, i poprawiać tylko trzeba / można na IE6 :)

  11. lukasz pisze:

    to IE8 jest w końcu kompatybilne ze standardami czy nie? Czy może działa to jeszcze tak jak w pierwszej wersji beta, zasysa style dla IE6/7 poczym powstaje remix?

  12. Wasacz pisze:

    lukasz: Żadnego (re)miksu nie ma; wg MS jakaś tam zgodność ze standardami jest, ale pamiętaj, że to nadal IE.

  13. lukasz pisze:

    Wasacz a zachowali komentarze warunkowe coby ewentualny plik podczepić?

  14. Wasacz pisze:

    Tak. Ale już expressions działają tylko w trybie emulowania IE7 albo w quirks.

  15. Bartosz "BTM" Szczec pisze:

    No i to chyba dobrze. IE7 / 6 używało expresions głównie po to, by nadrobić brak standardów. Teraz większość CSS2 już chyba łapie, nie?

  16. Wasacz pisze:

    Łapie, nie łapie – bugi są nadal, a teraz to nie ma za bardzo jak ich naprawić.

  17. lukasz pisze:

    Czyli jeśli MS wymusi instalację IE8, to zrobi się ładny burdel? To ma swoje plusy, Ci co chcieli zrobić „tanie strony”, w końcu zobaczą że popełnili błąd jak ich strona firmowa się sypnie.

  18. Bartosz "BTM" Szczec pisze:

    @lukasz: nie licz na to. Instalacji IE7 nie wymusili, a przedłużyli lifespan XP – więc IE jeszcze sobie pożyje.
    Poza tym, dzięki kompatybilności IE8 z IE7 strony „przeżyją”.

  19. Wasacz pisze:

    lukasz: MS przecież oznaczył pół Internetu jako niekompatybilny. To czy strona jest „tania”, czy nie, raczej nie ma znaczenia, bo i tak się może wysypać (np. z powodu takich banalnych rzeczy jak clearowanie za pomocą GC w CSS).

  20. Bartosz "BTM" Szczec pisze:

    Dunno, moje serwisy się poprawnie w IE8 wyświetlają a nie stosowałem żadnych hacków. Zresztą, zwykle mam style.css, ie6.css i shitpera.css ;]

  21. Wasacz pisze:

    IE8 kuma :after a nie kuma ::after. Dla każdej przeglądarki poza IE to bez różnicy. I jest okazja do wysypania się.

    Zauważyłem też różnice w renderowaniu różnych marginesów i dopełnień, gdyby się tak bliżej przyjrzeć.

    To tylko przykłady. Do kompletu zostaje słaba obsługa JS i całkowity brak CSS3 (np. opacity, na które jest w IE8 filtr, ale chyba inny niż w IE6/7 – nie pamiętam). Ale znów aż tak źle nie jest ;]

  22. Bartosz "BTM" Szczec pisze:

    Powiem więcej – jest dużo lepiej. I nie mogę doczekać się momentu w którym:
    a) przestaniemy oceniać finalny produkt po becie, bo ileż to razy przy zmianie FF 2.x na 2.x+1 się coś rozpierdzieliło to mała głowa
    b) MS zamknie kramik z XP i ludzie przesiądą się na Vistę (IE7) lub W7 (IE8)

  23. dikamilo pisze:

    @Bartosz „BTM” Szczec, a jaki jest sens zmiany systemy tylko po to aby używać IE > 6 ? Ja na swoim xp mam ie7 mimo że i tak tej przeglądarki nie używam.

  24. Wasacz pisze:

    Ale IE8 ma już status RC ;-)

    IMHO, IE8 to nadal przeglądarka specjalnej troski, mimo tych poprawek.

  25. Bartosz "BTM" Szczec pisze:

    Ale Kowalski i jego mama, albo Pani Zosia z księgowości nie ma, bo jej admin zainstalował IE6 i koniec.

  26. matek pisze:

    Czy przy okazji mogę prosić o rozjaśnienie takiej sprawy (no chyba że coś przeoczyłem) ?

    Otóż, mam stronę z zestawem poprawek dla IE 6/7 (w osobnych arkuszach otoczonych komentarzami warunkowymi). Stosowałem zawsze konwencje „if IE eq 7” (czyli warunek nie będzie dotyczył IE8). Czy mam się więc czym martwić jeśli chodzi o poprawne wyświetlenie w IE8? (pomijając to, że pewnie trzeba będzie doczepić kolejny ie8.css).
    A sposobem aby móc w IE8 korzystać z expressions, będzie właśnie włączenie przez rzeczony znacznik meta trybu zgodności z IE7? (wtedy strony wyświetlają się jak w IE7, jednak z szybkością IE8?).
    Z góry dzięki za wyjaśnienia, i pozdrawiam.

    Niech MS dobrze przemyśli sprawę tych (nie)zgodności wstecz i wspak :), bo się jeszcze większy bajzel zrobi na tym poletku.

  27. lukasz pisze:

    matek i dobrze że się zrobi, w końcu ludzie zobaczą kto potrafi projektować a kto nie i ile to kosztuje. Chyba że MS wprowadzi znowu swój kolejny standard standardów i IE8/9 będzie wyświetlało każdą stronę inaczej bo opracują nową technologię gdzie 1px = 2px ;)

  28. Bartosz "BTM" Szczec pisze:

    @lukasz: o, to by było dobre, bo wtedy mógłbym robić to co chcą nasi handlowcy („przesuń ten banerek o pół piexela w prawo”)

  29. lukasz pisze:

    świetne, szczególnie że musiałbyś poprawiać styl dla IE6/7, + 3 dla IE8 :D standardowy, kompatybilny z poprzednimi wersjami[bo tych co powstały dla poprzednich wersji nie łapie], oraz ten nowatorski :D wiesz… po głębszym zastanowieniu, znając praktyki MS w cale bym się nie zdziwił jakby takie coś weszło w życie.

  30. Bartosz "BTM" Szczec pisze:

    Wiesz, w tym momencie Twoja demonizacja nie zauważająca mojego sarkazmu zaczyna śmierdzieć fanboizmem. Mów co chcesz, ale IE zrobiło jednak dla sieci dużo dobrego – a to, że teraz musimy męczyć się z behemotem z czasów Window98 to już inna sprawa ;]

  31. lukasz pisze:

    Nie przesadzaj ;) Nikt tego nie neguje, choć szkoda że tak to się skończyło.

Dodaj komentarz

Proszę, formatuj komentarz za pomocą Markdown.

Wymagane pola zaznaczone są znakiem gwiazdki – „*


Obrazek z kodem

*