Zbliżający się powoli Internet Explorer 8 ma wspierać zupełnie nową metodę określania trybu renderowania strony przez przeglądarkę. Informacja ta została niedawno podana na oficjalnym blogu IE. Nowa metoda ma pomóc w „bezbolesnym” wejściu na rynek 8 wersji Explorera z gruntownie przepisanym silnikiem renderującym, który pozytywnie przeszedł sławny test Acid2.
Równanie jest proste: nowy engine = nowe kłopoty, zwłaszcza ze starymi stronami. Wprowadzając nową metodę Microsoft chce uniknąć błędu, jaki miał miejsce w momencie premiery IE7, kiedy to wiele stron internetowych „rozsypało się” w nowej przeglądarce.
Nowa koncepcja jest prosta i polega na powiązaniu strony z konkretną wersją i zachowaniem silnika renderującego przeglądarki (ang. browser version targeting). Najlepiej zilustrować ją można za pomocą następującego przykładu:
Cofnijmy się w czasie i wyobraźmy sobie, że dokładnie za godzinę we wszystkich komputerach na świecie wyposażonych w system operacyjny Windows dokona się automatyczna aktualizacja przeglądarki IE6 do IE7. Oczywiście strona, którą się opiekujemy wyświetla się i działa poprawie pod IE6. Przeglądarka jest bowiem już 5 lat na rynku i mieliśmy wystarczająco dużo czasu, aby poznać i zaimplementować sporo tricków, hacków i innych obejść zapewniających jej prawidłowe działanie. Niestety – jak zwykle obudziliśmy sie rychło w czas i nie przetestowaliśmy jej w IE7. Teraz została niecała godzina i pewnym jest, że nie zdążymy już tego zrobić.
Dzięki nowej metodzie powyższa sytuacja nie musi skończyć się katastrofą. Wystarczy, że w sekcji <head>
naszej strony umieścimy następującą deklarację:
|
a IE7 wyświetli naszą stronę w identyczny sposób w jaki zrobiłby to IE6 – inaczej mówiąc – skorzysta z trybu renderującego IE6 (oczywiście czysto teoretycznie zakładamy, że IE7 wyposażony jest w mechanizm, o którym mowa).
A co jeśli na naszym serwerze znajduje się kilkaset innych stron, które również chcielibyśmy uchronić przed nadchodzącym IE7? Wystarczy prosta zmiana w konfiguracji serwera WWW i dodanie odpowiedniego nagłówka HTTP:
|
W sytuacji, gdy chcemy, aby strona renderowana była zawsze przez najnowsza wersje silnika przeglądarki nasza deklaracja powinna przyjąć następującą formę:
|
Zgodnie z informacją podaną na oficjalnym blogu IE, domyślnie IE8 będzie renderował strony w trybie zgodności ze standardami wykorzystując najnowszą wersję silnika renderującego. Powrót do trybu renderującego z IE7 możliwy będzie poprzez deklarację meta
, o której mowa była na początku.
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
Tyle teoria. Jak ten pomysł wyjdzie w praktyce? Przekonamy sie wraz z nadejściem IE8.
A za nastepne 20 lat kolejne przegladarki dalej beda musialy dodawac tryb zgodnosci z IE7, bo przeciez sa strony uraczone tym zajefajnym znacznikiem, ktorych autorzy nie musza aktualizowac, bo przeciez dziala i jest ten tag. Gratuluje.
A kolejne generacje przegladarek dodaja kolejne przestarzale wersje za kazdym razem, bo przeciez trzeba utrzymac kompatybilnosc.
Microsoft znowu wprowadza wlasne zasady na rynek. Juz nie jest wazna zgodnosc ze standardem CSS2, CSS3, DOM2, HTML5. Wazna jest kompatybilnosc z tagami ktore wymysla… Czy to juz nie bylo kiedys? Daawno temu? Mam nadzieje, ze ten pomysl MS nie przejdzie
No jak fajnie, że M$ tak o nas dba … wszystkie dzieci neostrady na pewno docenią te starania … Tylko czy ta sytuacja powinna nas dziwić ? Przecież M$ zawsze uważał, że wie najlepiej i to oni powinni ustalać "standardy" … Dzięki nim dalej żyć będą strony z serii "IE hacks, tricks & and whatever you want" … a wystarczyłoby po prostu wreszcie dostosować swoją przeglądarkę do już istniejących ram, które istnieją już jeśli się nie myle ponad 10 lat, ale to pozostaje w sferze marzeń …
Cudownie – stworzyć IE8 po to, aby wymusić dopisanie na stronach content="IE=6" lub content="IE=7". A potem się leniwcom nie będzie chciało poprawiać kodu stron bo ‘przecież działa’. W efekcie obsługę standardów przez IE8 można sobie… bo i tak trzeba będzie szukać haków pod IE7
W html5 ten znacznik prawdopodobnie nie będzie potrzebny