Java Reference
In-Depth Information
notwendig ist. Wir haben das ja bei der Suche nach der Versionsnummer eines Browsers
mit regulären Ausdrücken schon eingesetzt. Etwas einfach kann die Technik beispielsweise
so eingesetzt werden:
Listing 8.51■ Trennen der Browser über navigator.appName und Suchen nach einer enthaltenen
Zeichenkette
if(navigator.appName.search("Netscape")==-1) { // Kein Netscape-Browser
... }
Im Vergleich wird der Wert −1 zurückgegeben, wenn die Zeichenkette nicht vorkommt. So
funktioniert das Verfahren viel zuverlässiger als bei exakter Übereinstimmung. Das ändert
aber nichts an der Tatsache, dass auch dieser Test ins Leere läut, wenn der Anwender sei-
nen Browser komplett anders koniguriert.
Indirekte Identiizierung eines Browsers unter Ausnutzung eines Mangels
Es gibt die Möglichkeit zur Identiizierung eines Browsers, indem man sich gewisser Dinge
bedient, die nur in einer gewünschten Browservariante funktionieren. In anderen Browsern
werden die Dinge nicht verstanden. Entscheidend ist, dass man sowohl die positive als auch
die negative Reaktion auswertet und dann bestimmte Maßnahmen ergreit. Es handelt sich
hier also um eine indirekte Identiizierung eines Browsers unter Ausnutzung eines Mangels.
Nun war etwas unscharf von „Dinge“ die Rede. Damit sind etwa Anweisungen gemeint, die
auf bestimmten Systemen explizit eine sogenannte Ausnahme auslösen und mit einer geeig-
neten Maßnahme abgefangen werden. Bei vielen Techniken setzt man bei so einer Vorge-
hensweise aber explizit auf die Unterstützung ausgewählter proprietärer Sonderobjekte
durch gewisse Browser und auf die Tatsache, dass der Rückgabewert eines Zugrifs in einem
Vergleich in JavaScript als boolescher Wert verstanden wird. Der Zugrif auf das jeweilige
Objekt liefert nur dann den Wert true , wenn es auch unterstützt wird. So benutzte man
früher zur Identiizierung des Internet Explorers (bzw. kompatibler Browser) ot das propri-
etäre Microsot-Objekt all :
Listing 8.52■ Direkte Überprüfung auf Objekte
if (document.all) { ... }
else { ... }
Die Abfrage auf ein speziisches Objekt ist aber auch ein Paradebeispiel dafür, dass die
Ausnutzung eines Mangels oder einer ganz bestimmten Eigenheit in einem bestimmten
Browser, welche nur dieser versteht, irgendwann zu einem Problem werden kann. Da der
Internet Explorer früher eine dominierende Stellung hatte, haben viele andere Browserher-
steller dieses Objekt über die Zeit implementiert, obwohl es nicht standardisiert war. Bei
anderen proprietären Objekten (etwa für die Layer-Technologie) hatten Browserhersteller
dieses irgendwann aufgeben und optimierte Skripts für diesen Browser sind in neuen Ver-
sionen nicht gelaufen. Die Erfahrung zeigt also, dass Identiikationen über einen proprietä-
ren Standard mit der Zeit immer mehr Fehler liefern.
8.11.3.1■Eine Browserweiche erstellen
Es ist unzweifelhat, dass man Webseiten ot an die Speziika eines bestimmten Browsers
anpassen muss. Nur muss eine Webseite automatisch an den jeweiligen Browser angepasst
 
Search WWH ::




Custom Search