1/* 2 Detect browser and version plugin 3 Author: http://www.quirksmode.org/js/detect.html 4*/ 5 6var BrowserDetect = { 7 init: function () { 8 this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; 9 this.version = this.searchVersion(navigator.userAgent) 10 || this.searchVersion(navigator.appVersion) 11 || "an unknown version"; 12 this.OS = this.searchString(this.dataOS) || "an unknown OS"; 13 }, 14 searchString: function (data) { 15 for (var i=0;i<data.length;i++) { 16 var dataString = data[i].string; 17 var dataProp = data[i].prop; 18 this.versionSearchString = data[i].versionSearch || data[i].identity; 19 if (dataString) { 20 if (dataString.indexOf(data[i].subString) != -1) 21 return data[i].identity; 22 } 23 else if (dataProp) 24 return data[i].identity; 25 } 26 }, 27 searchVersion: function (dataString) { 28 var index = dataString.indexOf(this.versionSearchString); 29 if (index == -1) return; 30 return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); 31 }, 32 dataBrowser: [ 33 { 34 string: navigator.userAgent, 35 subString: "Chrome", 36 identity: "Chrome" 37 }, 38 { string: navigator.userAgent, 39 subString: "OmniWeb", 40 versionSearch: "OmniWeb/", 41 identity: "OmniWeb" 42 }, 43 { 44 string: navigator.vendor, 45 subString: "Apple", 46 identity: "Safari", 47 versionSearch: "Version" 48 }, 49 { 50 prop: window.opera, 51 identity: "Opera" 52 }, 53 { 54 string: navigator.vendor, 55 subString: "iCab", 56 identity: "iCab" 57 }, 58 { 59 string: navigator.vendor, 60 subString: "KDE", 61 identity: "Konqueror" 62 }, 63 { 64 string: navigator.userAgent, 65 subString: "Firefox", 66 identity: "Firefox" 67 }, 68 { 69 string: navigator.vendor, 70 subString: "Camino", 71 identity: "Camino" 72 }, 73 { // for newer Netscapes (6+) 74 string: navigator.userAgent, 75 subString: "Netscape", 76 identity: "Netscape" 77 }, 78 { 79 string: navigator.userAgent, 80 subString: "MSIE", 81 identity: "Explorer", 82 versionSearch: "MSIE" 83 }, 84 { 85 string: navigator.userAgent, 86 subString: "Gecko", 87 identity: "Mozilla", 88 versionSearch: "rv" 89 }, 90 { // for older Netscapes (4-) 91 string: navigator.userAgent, 92 subString: "Mozilla", 93 identity: "Netscape", 94 versionSearch: "Mozilla" 95 } 96 ], 97 dataOS : [ 98 { 99 string: navigator.platform, 100 subString: "Win", 101 identity: "Windows" 102 }, 103 { 104 string: navigator.platform, 105 subString: "Mac", 106 identity: "Mac" 107 }, 108 { 109 string: navigator.userAgent, 110 subString: "iPhone", 111 identity: "iPhone/iPod" 112 }, 113 { 114 string: navigator.platform, 115 subString: "Linux", 116 identity: "Linux" 117 } 118 ] 119 120}; 121BrowserDetect.init();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.