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