Browserweichen mit Prototype 2

Zu meinem letzten Beitrag zu dem Thema „Browserweichen in JavaScript“ gab es die Bemerkung, dass es in Mootools einfacher ist, entsprechende Weichen zu verwenden. Das ist richtig, denn dort gibt es die aufgezeigten Funktionalitäten von Hause aus und bereits in der offiziellen Doku dokumentiert. Aber wer schon mehrere Zeilen Code bzw. ein ganzes Projekt in Prototype umgesetzt hat, wird kaum wechseln wollen. Allerdings gefällt mir die Implementierung in Mootools besser. Letztes Wochenende habe ich mich daran gemacht, diese Implementierung in die Prototype-Bibliotek zu übernehmen.

Um diese Implementierung zu verwenden, erstellt man am besten eine JavaScript-Datei, welche man direkt nach der prototype.js läd. Bei mir heißt diese Datei immer prototype_extension.js und enthält allerlei Erweiterungen und Bugfixes.

Prototype.Browser = {
	IE:     !!(window.attachEvent && !window.opera),
	Opera:  !!window.opera,
	WebKit: document.childNodes && !document.all && !navigator.taintEnabled,
	Gecko:  (document.getBoxObjectFor != null),
	MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
};

Object.extend(Prototype.Browser, {
     WebKit419: Prototype.Browser.WebKit && (Prototype.BrowserFeatures.XPath),
     WebKit420: Prototype.Browser.WebKit && (!Prototype.BrowserFeatures.XPath),
     IE6:      Prototype.Browser.IE && (typeof window.XMLHttpRequest == "undefined"),
     IE7:      Prototype.Browser.IE && (typeof window.XMLHttpRequest == "object")
});

Der Vorteil dieser Implementierung ist, dass sie weitgehend unabhängig ist von dem UserAgent-String, den der Browser mitsendet und welcher ja nicht zwingend den Browser korrekt identifiziert. So können sich Browser beispielsweise als ein anderer Browser ausgeben, indem sie einen abgeänderten UserAgent-String mitsenden. Die Standard-Implementierung von Prototype basiert überwiegend auf der Abfrage es UserAgents.

Hinterlasse einen Kommentar

1 Kommentar auf "Browserweichen mit Prototype 2"

Benachrichtige mich zu:
avatar

Sortiert nach:   neuste | älteste | beste Bewertung
trackback
10 Jahre 10 Monate her

Browserweichen mit Prototype 2…

Eine Weiterführung des ersten Artikels zu diesem Thema. Es wurde eine bessere Art der Browserweiche implementiert, welche ohne die UserAgent-Strings auskommt……

wpDiscuz
Weitere Beiträge zum Thema
Beacons – Die heimlichen Helfer der Webseitenbetreiber
Javascript in Magento 2, the way to do it
ISO-8601-Stolperfalle bei Zend_Date
Extension: Hybrid Multilanguage Tree