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