Client Side Browser Sniffing mit Javascript ist eine noch immer notwendige Technik, da man nicht immer Boliden wie jQuery in Stellung bringen kann, die bekannte Unebenheiten ausbügeln.
Browser Sniffing wird oft zu Unrecht verteufelt, da viele Programmierer nur schauen um was für einen Browser es sich handelt, aber z.B. nicht auf die Versionsspezifischen Features oder Bugs eingehen. Deshalb wird vielerorts propagiert stattdessen auf Feature Sniffing zu setzen.
Richtig eingesetzt kann eine Browserweiche in Javascript sehr oft sehr nützlich sein. Da ich immer für besonders schmalen Code zu haben bin, habe ich mich über einen Artikel auf Ajaxian.com gefreut, der einige nette Sniffing-Methoden von Gareth Heyes vorstellt.
Internet Explorer inklusive Version 8
[javascript]IE=’\v’==’v’[/javascript]
Firefox 2 oder 3
[javascript]FF=/a/[-1]==’a’[/javascript]
Firefox 3
[javascript]FF3=(function x(){})[-5]==’x’[/javascript]
Firefox 2
[javascript]FF2=(function x(){})[-6]==’x’[/javascript]
Safari
[javascript]Saf=/a/.__proto__==’//’[/javascript]
Chrome
[javascript]Chr=/source/.test((/a/.toString+”))[/javascript]
Opera
[javascript]Op=/^function \(/.test([].sort)[/javascript]
Und nochmal alles in einer Funktion
[javascript]B=(function x(){})[-5]==’x'?’FF3′:(function x(){})[-6]==’x'?’FF2′:/a/[-1]==’a'?’FF’:'\v’==’v'?’IE’:/a/.__proto__==’//’?'Saf’:/s/.test(/a/.toString)?’Chr’:/^function \(/.test([].sort)?’Op’:'Unknown’;[/javascript]