|
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.$.client = { os : BrowserDetect.OS, browser : BrowserDetect.browser };
|
|
122 |
|
|
123 |
})();
|