PageSourceSearch

https://adsvantage.net/javascripts/browserdetect-1409258825.js

js adsvantage.net collected 2026-10-04 02:59:05 UTC 6,413 bytes, 216 lines download raw bytes

1// From: http://www.quirksmode.org/js/detect.html
2window.top.browserDetect = {
3    init: function () {
4        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
5
6        this.version = this.searchVersion(navigator.userAgent)
7            || this.searchVersion(navigator.appVersion)
8            || "an unknown version";
9
10        this.OS = this.searchString(this.dataOS) || "an unknown OS";
11
12        this.supportsRapportive = ((function () {
13            switch (browserDetect.browser) {
14                case "Chrome":
15                    return true;
16
17                case "ChromeOS":
18                    return true;
19
20                case "RockMelt":
21                    return true;
22
23                case "Flock":
24                    var flockVersion = navigator.userAgent.match(/Flock\/(\d+)\.(\d+)(?:\.(\d+))?/).slice(1, 4);
25                    if (!(parseInt(flockVersion[0]) < 3 || parseInt(flockVersion[1]) < 5)) {
26                        return true;
27                    }
28                    break;
29
30                case "Firefox":
31                    return true;
32
33                case "Safari":
34                    switch (browserDetect.OS) {
35                        case "Mac":
36                        case "Windows":
37                            var safariVersion = navigator.userAgent.match(/ Version\/(\d+)\.(\d+)(?:\.(\d+))?/).slice(1, 4);
38                            if (!(parseInt(safariVersion[0]) < 5 || parseInt(safariVersion[1]) < 0 || parseInt(safariVersion[2] || '0') < 1)) {
39                                return true;
40                            }
41                            break;
42                        case "iPhone/iPod":
43                            return false;
44                        case "iPad":
45                            return false;
46                        default:
47                            return false;
48                    }
49                    break;
50
51                default:
52                    switch (browserDetect.OS) {
53                        case "Android":
54                            return false;
55
56                        default:
57                            return false;
58                    }
59            }
60        })());
61    },
62    searchString: function (data) {
63        for (var i=0;i<data.length;i++)    {
64            var dataString = data[i].string;
65            var dataProp = data[i].prop;
66            this.versionSearchString = data[i].versionSearch || data[i].identity;
67            if (dataString) {
68                if (dataString.indexOf(data[i].subString) != -1)
69                    return data[i].identity;
70            }
71            else if (dataProp)
72                return data[i].identity;
73        }
74    },
75    searchVersion: function (dataString) {
76        var index = dataString.indexOf(this.versionSearchString);
77        if (index == -1) return;
78        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
79    },
80    dataBrowser: [
81        {
82            string: navigator.userAgent,
83            subString: "Flock",
84            identity: "Flock"
85        },
86        {
87            string: navigator.userAgent,
88            subString: "RockMelt",
89            identity: "RockMelt"
90        },
91        {
92            string: navigator.userAgent,
93            subString: "Chrome",
94            identity: "Chrome"
95        },
96        {
97            string: navigator.userAgent,
98            subString: "OmniWeb",
99            versionSearch: "OmniWeb/",
100            identity: "OmniWeb"
101        },
102        {
103            string: navigator.vendor,
104            subString: "Apple",
105            identity: "Safari",
106            versionSearch: "Version"
107        },
108        {
109            prop: window.opera,
110            identity: "Opera"
111        },
112        {
113            string: navigator.vendor,
114            subString: "iCab",
115            identity: "iCab"
116        },
117        {
118            string: navigator.vendor,
119            subString: "KDE",
120            identity: "Konqueror"
121        },
122        {
123            string: navigator.userAgent,
124            subString: "Firefox",
125            versionSearch: "Firefox",
126            identity: "Firefox"
127        },
128        {
129            string: navigator.userAgent,
130            subString: "Iceweasel",
131            identity: "Firefox"
132        },
133        {
134            string: navigator.userAgent,
135            subString: "Shiretoko",
136            identity: "Firefox"
137        },
138        {
139            string: navigator.userAgent,
140            subString: "Namoroka",
141            identity: "Firefox"
142        },
143        {
144            string: navigator.userAgent,
145            subString: "Minefield",
146            identity: "Firefox"
147        },
148        {
149            string: navigator.vendor,
150            subString: "Camino",
151            identity: "Camino"
152        },
153        {        // for newer Netscapes (6+)
154            string: navigator.userAgent,
155            subString: "Netscape",
156            identity: "Netscape"
157        },
158        {
159            string: navigator.userAgent,
160            subString: "MSIE",
161            identity: "Explorer",
162            versionSearch: "MSIE"
163        },
164        {
165            string: navigator.userAgent,
166            subString: "Gecko",
167            identity: "Mozilla",
168            versionSearch: "rv"
169        },
170        {         // for older Netscapes (4-)
171            string: navigator.userAgent,
172            subString: "Mozilla",
173            identity: "Netscape",
174            versionSearch: "Mozilla"
175        }
176    ],
177    dataOS : [
178        {
179            string: navigator.platform,
180            subString: "Win",
181            identity: "Windows"
182        },
183        {
184            string: navigator.platform,
185            subString: "Mac",
186            identity: "Mac"
187        },
188        { 
189            string: navigator.userAgent,
190            subString: "CrOS",
191            identity: "ChromeOS"
192        },
193        {
194            string: navigator.userAgent,
195            subString: "iPhone",
196            identity: "iPhone/iPod"
197        },
198        {
199            string: navigator.userAgent,
200            subString: "iPad",
201            identity: "iPad"
202        },
203        {
204            string: navigator.userAgent,
205            subString: "Android",
206            identity: "Android"
207        },
208        {
209            string: navigator.platform,
210            subString: "Linux",
211            identity: "Linux"
212        }
213    ]
214
215};
216browserDetect.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.