Rolf B: browserweiche für alle IE mittel cgi?

Beitrag lesen

Hallo michaah,

20% IE9? Das muss aber ein sehr spezielles Publikum sein, das auf Windows Vista oder irgendein uraltes Mobilwindows festgenagelt ist. Ab Win7 ist der IE11 verfügbar.

Du kannst mit serverseitiger Software den Browser nicht erkennen. Oder nur begrenzt.

Der Browser gibt Dir den sogenannten UserAgent String mit; das ist einer de Request Header. Den kannst Du in PHP auswerten und dementsprechend verzweigen. Ggf. bietet Dir auch der Webserver an, den UserAgent String auszuwerten und dementsprechend andere Ressourcen auszuliefern.

Du kannst. ABER DU SOLLST NICHT. UserAgent-Analysen sind State of the Art der 2000er.

Für meinen Chrome sieht es so aus:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36

Und für den IE11 auf meinem Win10 so:

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Daran siehst Du schon, dass die Browser da eine Menge Zeugs reinschreiben, damit sie von UserAgent Abfragen möglichst vielseitig erkannt werden. Wie Mozilla wollen sie alle aussehen, wie Gecko auch, und Chrome erzählt noch eine Menge Märchen mehr. Unter anderem erzählen die Browser eigentlich auch viel zu viel. Was geht es einen Server an, ob ich Win10 verwende? Oder Chrome im 64-bit Modus laufen lasse?

Opera hatte eine Funktion, den UserAgent String frei eintragen zu können, um sich unwilligen Servern gegenüber maskieren zu können.

Das Bekloppteste beim IE ist: Man kann ihn ja in den Entwicklerwerkzeugen verdummen (noch weiter als er ohnehin schon ist) und eine frühere IE-Version zur Seitendarstellung auswählen. Ich habe mal IE9 ausgewählt. Und bekomme als UserAgent:

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Soviel zu UserAgent Prüfungen für den IE9. Wenn dein Server dem IE9 was besonders Antikes liefern will, dann kannst Du das so nicht mal testen.

Fazit: Das macht man nicht. Man verwendet clientseitige Feature Detection, um bestimmte Funktionen nur bei Vorhandensein zu nutzen. Oder Polyfills, um benötigte, aber fehlende Funktionen nachzurüsten.

Wenn man Uraltbrowser unterstützen will, artet das echt in Arbeit aus. Besser, man unterstützt sie nicht, sondern toleriert sie. Die Seite muss - das ist dann Progressive Enhancement, nicht Responsive Design - so gebaut sein, dass sie auf einem Altbrowser nicht zertrümmert aussieht. Mit PE kannst Du sie für moderne Browser aufhübschen.

Bei 20% IE9 sieht die Sache allerdings schon anders aus. So vielen Kunden mag man keine Primitivversion seiner Seite schicken. Kannst Du auf deiner modernen Seite nicht irgendwo einen Link "Vintage-Version dieser Seite" einblenden?

Du musst dabei auch bedenken, dass Du dann zwei Versionen der Seite pflegen und testen musst. Willst Du Dir das antun? Oder ist die Vintage-Version eine konservierte Alt-Version?

Rolf

--
sumpsi - posui - obstruxi