browser.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /*
  2. * From:
  3. * http://www.quirksmode.org/js/detect.html
  4. */
  5. var Browser = {
  6. init: function () {
  7. this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
  8. this.version = this.searchVersion(navigator.userAgent)
  9. || this.searchVersion(navigator.appVersion)
  10. || "an unknown version";
  11. this.majorVersion = this.searchMajorVersion(navigator.userAgent)
  12. || this.searchMajorVersion(navigator.appVersion)
  13. || "an unknown version";
  14. this.fullVersion = this.searchFullVersion(navigator.userAgent)
  15. || this.searchFullVersion(navigator.appVersion)
  16. || "an unknown version";
  17. this.OS = this.searchString(this.dataOS) || "an unknown OS";
  18. },
  19. searchString: function (data) {
  20. for (var i=0;i<data.length;i++) {
  21. var dataString = data[i].string;
  22. var dataProp = data[i].prop;
  23. this.versionSearchString = data[i].versionSearch || data[i].identity;
  24. if (dataString) {
  25. if (dataString.indexOf(data[i].subString) != -1)
  26. return data[i].identity;
  27. }
  28. else if (dataProp)
  29. return data[i].identity;
  30. }
  31. },
  32. searchFullVersion: function (dataString) {
  33. var index = dataString.indexOf(this.versionSearchString);
  34. if (index == -1) return;
  35. return dataString.substring(index+this.versionSearchString.length+1);
  36. },
  37. searchVersion: function (dataString) {
  38. return this.searchFullVersion(dataString).split(" ")[0];
  39. },
  40. searchMajorVersion: function (dataString) {
  41. return parseFloat(this.searchFullVersion(dataString).split(".")[0]);
  42. },
  43. dataBrowser: [
  44. {
  45. string: navigator.userAgent,
  46. subString: "Chrome",
  47. identity: "Chrome"
  48. },
  49. { string: navigator.userAgent,
  50. subString: "OmniWeb",
  51. versionSearch: "OmniWeb/",
  52. identity: "OmniWeb"
  53. },
  54. {
  55. string: navigator.vendor,
  56. subString: "Apple",
  57. identity: "Safari",
  58. versionSearch: "Version"
  59. },
  60. {
  61. prop: window.opera,
  62. identity: "Opera",
  63. versionSearch: "Version"
  64. },
  65. {
  66. string: navigator.vendor,
  67. subString: "iCab",
  68. identity: "iCab"
  69. },
  70. {
  71. string: navigator.vendor,
  72. subString: "KDE",
  73. identity: "Konqueror"
  74. },
  75. {
  76. string: navigator.userAgent,
  77. subString: "Firefox",
  78. identity: "Firefox"
  79. },
  80. {
  81. string: navigator.vendor,
  82. subString: "Camino",
  83. identity: "Camino"
  84. },
  85. { // for newer Netscapes (6+)
  86. string: navigator.userAgent,
  87. subString: "Netscape",
  88. identity: "Netscape"
  89. },
  90. {
  91. string: navigator.userAgent,
  92. subString: "MSIE",
  93. identity: "Explorer",
  94. versionSearch: "MSIE"
  95. },
  96. {
  97. string: navigator.userAgent,
  98. subString: "Gecko",
  99. identity: "Mozilla",
  100. versionSearch: "rv"
  101. },
  102. { // for older Netscapes (4-)
  103. string: navigator.userAgent,
  104. subString: "Mozilla",
  105. identity: "Netscape",
  106. versionSearch: "Mozilla"
  107. }
  108. ],
  109. dataOS : [
  110. {
  111. string: navigator.platform,
  112. subString: "Win",
  113. identity: "Windows"
  114. },
  115. {
  116. string: navigator.platform,
  117. subString: "Mac",
  118. identity: "Mac"
  119. },
  120. {
  121. string: navigator.userAgent,
  122. subString: "iPhone",
  123. identity: "iPhone/iPod"
  124. },
  125. {
  126. string: navigator.platform,
  127. subString: "Linux",
  128. identity: "Linux"
  129. }
  130. ]
  131. };
  132. Browser.init();