We Recommend

Pro JavaScript Techniques Pro JavaScript Techniques
Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web sites. This book doesn't waste any time looking at things you already know, like basic syntax and structures.


Posted By

jonhenshaw on 08/01/06


Tagged


Versions (?)


Who likes this?

13 people have marked this snippet as a favorite

alvaroisorna
postNuKe
panatlantica
hxseven
powerkan
dmarten
basicmagic
clapfouine
Runtheball
tmarkiewicz
vali29
visuallyspun
joshontheweb


Browser Detect Lite v2.1


Published in: JavaScript 


URL: http://bigi.co.il/libs/common/browserdetect_lite

Browser Detect Lite v2.1 http://www.dithered.com/javascript/browser_detect/index.html modified by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM)

modified by Michael Lovitt to include OmniWeb and Dreamcast

  1. // Browser Detect Lite v2.1
  2. // http://www.dithered.com/javascript/browser_detect/index.html
  3. // modified by Chris Nott (chris@NOSPAMdithered.com - remove NOSPAM)
  4. //
  5. // modified by Michael Lovitt to include OmniWeb and Dreamcast
  6.  
  7. function BrowserDetectLite() {
  8. var ua = navigator.userAgent.toLowerCase();
  9. this.ua = ua;
  10.  
  11. // browser name
  12. this.isGecko = (ua.indexOf('gecko') != -1);
  13. this.isMozilla = (this.isGecko && ua.indexOf("gecko/") + 14 == ua.length);
  14. this.isNS = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
  15. this.isIE = ( (ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1) );
  16. this.isOpera = (ua.indexOf("opera") != -1);
  17. this.isKonqueror = (ua.indexOf("konqueror") != -1);
  18. this.isIcab = (ua.indexOf("icab") != -1);
  19.  
  20. this.isAol = (ua.indexOf("aol") != -1);
  21. this.isWebtv = (ua.indexOf("webtv") != -1);
  22. this.isOmniweb = (ua.indexOf("omniweb") != -1);
  23. this.isDreamcast = (ua.indexOf("dreamcast") != -1);
  24.  
  25. // spoofing and compatible browsers
  26. this.isIECompatible = ( (ua.indexOf("msie") != -1) && !this.isIE);
  27. this.isNSCompatible = ( (ua.indexOf("mozilla") != -1) && !this.isNS && !this.isMozilla);
  28.  
  29. // browser version
  30. this.versionMinor = parseFloat(navigator.appVersion);
  31.  
  32. // correct version number for NS6+
  33. if (this.isNS && this.isGecko) {
  34. this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );
  35. }
  36.  
  37. // correct version number for IE4+
  38. else if (this.isIE && this.versionMinor >= 4) {
  39. this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
  40. }
  41.  
  42. // correct version number for Opera
  43. else if (this.isOpera) {
  44. if (ua.indexOf('opera/') != -1) {
  45. this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) );
  46. }
  47. else {
  48. this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) );
  49. }
  50. }
  51.  
  52. // correct version number for Konqueror
  53. else if (this.isKonqueror) {
  54. this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
  55. }
  56.  
  57. // correct version number for iCab
  58. else if (this.isIcab) {
  59. if (ua.indexOf('icab/') != -1) {
  60. this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) );
  61. }
  62. else {
  63. this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) );
  64. }
  65. }
  66.  
  67. // correct version number for WebTV
  68. else if (this.isWebtv) {
  69. this.versionMinor = parseFloat( ua.substring( ua.indexOf('webtv/') + 6 ) );
  70. }
  71.  
  72. this.versionMajor = parseInt(this.versionMinor);
  73. this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
  74.  
  75. // platform
  76. this.isWin = (ua.indexOf('win') != -1);
  77. this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1) );
  78. this.isMac = (ua.indexOf('mac') != -1);
  79. this.isUnix = (ua.indexOf('unix') != -1 || ua.indexOf('linux') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
  80.  
  81. // specific browser shortcuts
  82. this.isNS4x = (this.isNS && this.versionMajor == 4);
  83. this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
  84. this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
  85. this.isNS4up = (this.isNS && this.versionMinor >= 4);
  86. this.isNS6x = (this.isNS && this.versionMajor == 6);
  87. this.isNS6up = (this.isNS && this.versionMajor >= 6);
  88.  
  89. this.isIE4x = (this.isIE && this.versionMajor == 4);
  90. this.isIE4up = (this.isIE && this.versionMajor >= 4);
  91. this.isIE5x = (this.isIE && this.versionMajor == 5);
  92. this.isIE55 = (this.isIE && this.versionMinor == 5.5);
  93. this.isIE5up = (this.isIE && this.versionMajor >= 5);
  94. this.isIE6x = (this.isIE && this.versionMajor == 6);
  95. this.isIE6up = (this.isIE && this.versionMajor >= 6);
  96.  
  97. this.isIE4xMac = (this.isIE4x && this.isMac);
  98. }
  99. var browser = new BrowserDetectLite();

Report this snippet 

You need to login to post a comment.