Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.5a) Gecko/20030718
To jest IMHO przesada.
Jeżeli przeglądarka umie coś obsłużyć (a
Konqueror umie prawie tyle CSS, co Mozilla), to czemu w tym przeszkadzać i serwować wykastrowaną wersję, tylko dlatego, że uważa się że if (document.all) to najlepsze rozwiązanie na wykrywanie IE?
Rozsądne jest rozwiązanie, w którym (jeśli chodzi o CSS) przeglądarki podzielimy na trzy grupy:
1. Zgodne ze standardami (Mozilla, Opera, Konqueror, Safari, i in.).
- maksimum funkcjonalności i wyglądu (CSS)
2. Internet Explorer 5.5+
- tyle, ile badzIEw zrozumie
3. Śmiecie (IE 5.0-, NN4)
- dla nich dbamy tylko o funkcjonalność, wygląd jest tu trzeciorzędną sprawą
Pełen bajerancki CSS serwujemy dla(1), dla (2) uproszczony, dla (3) albo bardzo uproszczony, albo je po prostu olewamy, serwując dokument bez CSS i podając linka do upgrade campaign na
www.webstandards.org.
Dlatego sensowne jest:
- Kod: Zaznacz cały
if (document.getElementById&&(navigator.userAgent.indexOf("MSIE")!=-1&&!window.opera))
css='ie55.css'; // dostanie to tylko IE.
else if (document.getElementById)
css='full.css'; // wszystko poza IE, co rozumie getElementById - grupa (2)
else
css='nn4ie4.css''; // reszta, czyli grupa (3)
document.write("<link rel='stylesheet' type='text/css' href='"+css+"'>"
Grupę (2) sprawdzam po metodzie, bo zazwyczaj, jeśli coś nie jest IE, a obsługuje W3C DOM, to obsługuje CSS. Takie założenie jest uprawnione, w przeciwieństwie do odwrotnego - że jeśli coś ma document.all, to nie umie CSS....
Problemem takiego rozwiązania jest tylko "zgodność w przyszłość", bo może IE 7 będzie obsługiwać CSS przynajmniej tak, jak Konqueror. Ale do IE 7 mamy jeszcze dwa lata, a poprawka w tym skrypcie to kwestia kilku sekund.
Nie ma sensu dyskryminować Konquerorowców tylko dlatego, że IE jest do bani, a Konq w paru miejscach jest z nim zgodny.
Przypomina mi to traktowanie Mozillowców jak użytkowników NN4....
Oczywiście dalej uważam, że najlepsza metoda na niezgodności CSS w przeglądarkach to odpowiednie manipulowanie selektorami, a nie zabawa z JS.