molily: var und const

Beitrag lesen

Hallo,

  1. Es ist für statistische Zwecke durchaus interessant zu wissen, mit welchem Browser die eigene Zielgruppe wie unterwegs ist. (Nebenbei ist da vielleicht auch noch interessant, wieviele User ihre Browser via UA "tarnen".)

Ja, für solche Zwecke verwende ich u.a. vendor-Abfragen. (An so etwas habe ich erst in den letzten Tagen gearbeitet.) Der Unterschied ist eben, dass von Browsererkennung im Rahmen einer Statistik nichts abhängt. Wenn ich den Browser falsch erkenne, kann ich noch andere Heuristiken anwenden (HTTP-UA, navigator.userAgent, sonstige Objekte ...), und wenn letztlich alles schiefläuft, habe ich eine minimal fehlerhafte Statistik, aber mehr nicht. Von einer solchen Erkennung würde ich aber nur im Notfall eine Funktionalität einer Site abhängig machen.

  1. Auch Browser haben schlichtweg Bugs. Man kann sich auf den Standpunkt stellen: "Was interessieren mich die Bugs? Sollen die User doch updaten. Das ist nicht mein Problem!"

Ältere Versionen anzusprechen finde ich »safe« - sie sind abgeschlossen und da tut sich nichts mehr. Man kann daher Kriterien suchen, anhand derer eine recht zuverlässige Erkennung möglich ist.

Schwierig wird es, wenn zum Zeitpunkt des Schreiben des Scriptes noch kein Fix existiert, aber auch keine Fähigkeitenabfrage möglich ist. Dann bleibt einem nichts anderes übrig, als »Zeitbomben« im Script unterzubringen.

Wenn man mal die Arbeit z.B. von Opera verfolgt, dann zeigen sich große Probleme dabei, mit den Betreiber großer Sites zusammenzuarbeiten. Die haben nämlich irgendwann, als sie einen Fehler in einer aktuellen Opera-Version festgestellt haben, ein if (window.opera) eingebaut. (Und leider war das manchmal nötig - die Betreiber haben nicht einfach gepfuscht.) Der Fehler ist längst behoben, aber die Site funktioniert im korrigierten Opera immer noch nicht. Das nervt Opera-Anwender und Opera Software bricht sich einen ab, die Betreiber dazu zu bringen, die Browserabfragen herauszuwerfen.

  1. Die Browserhersteller haben sich vermutlich was dabei gedacht. Sowohl, daß sie "allg. UAs" einbauen (bzw. dem User ermöglichen, eigene UAs zu definieren), als auch dabei, daß sie jenseits des UAs eine verläßliche Erkennungsmöglichkeit bieten.

Nunja, da gilt eben nur für Opera mit dem window.opera-Objekt. In den anderen Fällen ist es letztlich Heuristik: Chrome ist in der Erkennung definiert als Browser von Google Inc. (okay, das scheint recht eindeutig, solange Google keinen weiteren veröffentlicht) und Safari ist definiert als Gecko von Apple (das geht nicht wirklich auf).

Die Abfrage dessen ist auch kein "Hack", sondern (zumindest im Fall von Konqueror und Opera) "offiziell garantiert" (bei Safari & Google habe ich leider noch nichts offizielles finden können - was auch der jeweils vergleichsweise schlechten Doku zugeschrieben werden mag).

Es gibt einfach nichts entsprechendes, das ist auch deren Politik.

Ich lasse die Entscheidung darüber (durchaus nebst entsprechenden "Belehrungen" - s.o.) dem jeweiligen Programmierer, um dessen jeweiligen Problemfall ich konkret nicht weiß, und wo auch meine Phantasie nicht ausreicht, mir vorzustellen, was alles möglich ist. Ich sehe mich schlicht nicht im Stande, weise Ratschläge zu geben, für Dinge, die ich nicht kenne (aber die vielleicht andere bedrückt).

Die Logik geht nicht auf. Indem man allgemeine Browsererkennungsscripte publiziert, ohne die Problemfälle zu betrachten, gibt man doch weise Ratschläge. Man publiziert eine Lösung für Probleme, die man gar nicht kennt, verspricht aber implizit, es sei irgendwie eine adäquate Lösung (»die Erkennung ist zuverlässig«). Gerade weil ich mir nicht vorstellen kann, »was alles möglich ist«, gaukle ich niemandem vor, ich könne eine Landkarte von Terra Incognita zeichnen.

Seit z.B. Bibliotheken eine solche Infrastruktur zur Verfügung stellen, wird sie auch allerorten benutzt. Da kann man siebenunddreißig Disclaimer in die Doku schreiben - das Know-How hinsichtlich browserübergreifende JavaScript-Programmierung ist einfach zu spärlich gesät, als dass die Disclaimer fruchten könnten.

Mathias