vod.onet.pl vs IE11 (plus garść historii WWW)
Kilka osób na forum pytało o rozwiązanie problemu z Internet Explorerem 11 i stroną vod.onet.pl. Po wybraniu opcji oglądaj pojawia się obecnie komunikat "Twoja przeglądarka WWW (Mozilla) nie współpracuje z technologią Microsoft Silverlight, która jest niezbędna do odtwarzania filmów w naszym serwisie.", co jest z dwóch powodów nieprawdą.
Jednym z tych powodów jest fakt, że dźwięk z filmu (lub reklam) się pojawia, więc wygląda na to, że odtwarzacz Silverlight jednak działa. Drugą nieprawdą jest fakt, że przeglądarka Internet Explorer 11 to przecież nie jest Mozilla.
A może jednak?
Agent użytkownika
Agent użytkownika, z angielska user agent to ogólne określenie na produkt, którego używa użytkownik, aby dostać się do zawartości strony internetowej. Zazwyczaj jest to przeglądarka internetowa. Taka przeglądarka identyfikuje się mówiąc serwerowi HTTP o swojej nazwie i wersji za pomocą tzw. ciągu user agent.
Internet Explorer w wersji 11 znacząco zmienił swoją identyfikację w stosunku do wersji poprzednich. Dotychczas IE prezentował się np. jako:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Co w wolnym tłumaczeniu z komputerowego na nasze oznacza "kompatybilny z Mozillą 5.0*, Internet Explorer 9.0, na Windows 7, silnik renderujący Trident w wersji 5.0".
Obecnie, IE11 prezentuje się jako:
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Co oznacza - "kompatybilny z Mozillą 5.0, na Windows 8.1, na warstwie kompatybilności WOW64, oparty o silnik Trident w wersji 7.0, wersja 11.0, "jakby Gecko"". "Gecko" to kodowa nazwa silnika renderującego w przeglądarce Mozilla Firefox (między innymi), czyli ogólnie mówiąc - IE11 udaje Firefoksa!
Czy widzicie gdzieś tutaj ciąg "IE" albo "MSIE" albo "Explorer"? Ano właśnie.
Niektóre strony internetowe chcą prezentować inną zawartość dla innych przeglądarek internetowych. Rozpoznaje się wtedy przeglądarkę (względnie silnik renderujący) przez proste wyszukiwanie słów takich jak "Gecko", "MSIE", "Opera" czy "Webkit" i serwuje nieco zmodyfikowany kod HTML dla niektórych.
W Microsofcie wyszli z założenia, że mają dość, że dla Internet Explorera 11, który od swojego czcigodnego** przodka, wersji 6, odszedł dość daleko w dziedzinie obsługi współczesnych standardów sieciowych, a tu nadal niektóre strony widząc IE dają mu upośledzoną wersję strony zamiast normalnej strony zgodnej ze standardami sieciowymi. Więc to zmienili.
I stąd problem - vod.pl próbuje potraktować IE11 jakby był Mozillą i stwierdza u tej fałszywej Mozilli brak obsługi Silverlight, więc prezentuje odpowiedni komunikat. Niestety - Silverlight jest, więc jak widać, coś poszło nie tak.
Proof-of-concept
Sprawdźmy zatem koncepcję. Używając klawisza F12 można uruchomić narzędzia dla programistów w IE11, w których są opcje "emulacji" (pod Ctrl+8)., gdzie jesteśmy w stanie zmienić ciąg user-agent którym przeglądarka się identyfikuje. Zmieniając to na przykład na Internet Explorera 9 restartujemy film na vod.pl i co się okazuje? Działa! (a przynajmniej reklama).
Z uwagi na to, że są to narzędzia dla programistów, to w przypadku błędów JavaScriptu pojawiają się też odpowiednie zatrzymania wykonywania skryptów, ale to nie jest najważniejsze - wystarczy kliknąć "Kontynuuj" (F5).
Skoro jednak działa głos, to może jednak film "dzieje się" pod planszą?
Usunięcie planszy informacyjnej
Za pomocą narzędzi dla programistów można również usunąć po prostu planszę informującą o braku Silverlighta i cieszyć się filmem.
Aby to zrobić wystarczy w narzędziach dla programistów wybrać opcję Konsoli (Ctrl+2) i wpisać w niej:
document.getElementsByClassName('slInstallPlayer')[0].style.display='none';
Plansza znika, a film (lub reklamy) działają.
A może tryb kompatybilności?
W Internet Explorerze od pewnego czasu dostępny jest tryb kompatybilności. Jedną z jego funkcji jest między innymi zmiana ciągu user-agent przeglądarki - do postaci zgodnej z bardzo starymi wersją IE***.
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.7)
Niestety - mimo, iż z testów wynika, ze rozwiązanie powinno działać - dla strony vod.pl nie działa i niezbyt wiem dlaczego.
Prawdziwe rozwiązanie
Tak - można się tego było spodziewać. Trzeba poinformować vod.pl o problemie i liczyć na poprawkę z ich strony. To nie jest problem z IE - tylko raczej z kombinacją skryptów vod.pl wraz z nową identyfikacją Internet Explorera.
Programiści vod.pl - prawdopodobnie wystarczy wykrywać ciąg "Trident" zamiast ciągu "MSIE".
Więcej informacji
- http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explor...
- http://msdn.microsoft.com/library/ms537503.aspx
- * Internet Explorer mówi, że jest kompatybilny z Mozillą - to jest zaszłość z czasów naprawdę historycznych, kiedy Netscape dominowało, a ramki były nowością !
- ** Niektórzy mogą się ze mną nie zgodzić, ale ja twierdzę, że IE6 był świetną przeglądarką! Oczywiście, jeśli mowa o roku 2001 :-)
- *** Ciągi informujące o wersjach .NET CLR i niektórych dodatkowych zainstalowanych aplikacjach zostały usunięte w późniejszych wersjach IE - jednym z powodów jest oczywiście prywatność użytkownika. Właściwość JavaScriptu navigator.userAgent (gdzie ów navigator to również świadectwo historii WWW) prezentuje jednak "nowszy" ciąg, wraz z tymi dodatkami.