PageSourceSearch

https://kvf.fo/sites/all/themes/felags/detectClient.js?tm6ezn

js kvf.fo collected 2026-10-02 06:15:28 UTC 7,469 bytes, 203 lines download raw bytes

1/**
2 * JavaScript Client Detection
3 * (C) viazenetti GmbH (Christian Ludwig)
4 */
5(function (window) {
6    {
7        var unknown = '-';
8
9        // screen
10        var screenSize = '';
11        if (screen.width) {
12            width = (screen.width) ? screen.width : '';
13            height = (screen.height) ? screen.height : '';
14            screenSize += '' + width + " x " + height;
15        }
16
17        // browser
18        var nVer = navigator.appVersion;
19        var nAgt = navigator.userAgent;
20        var browser = navigator.appName;
21        var version = '' + parseFloat(navigator.appVersion);
22        var majorVersion = parseInt(navigator.appVersion, 10);
23        var nameOffset, verOffset, ix;
24
25        // Opera
26        if ((verOffset = nAgt.indexOf('Opera')) != -1) {
27            browser = 'Opera';
28            version = nAgt.substring(verOffset + 6);
29            if ((verOffset = nAgt.indexOf('Version')) != -1) {
30                version = nAgt.substring(verOffset + 8);
31            }
32        }
33        // Opera Next
34        if ((verOffset = nAgt.indexOf('OPR')) != -1) {
35            browser = 'Opera';
36            version = nAgt.substring(verOffset + 4);
37        }
38        // Legacy Edge
39        else if ((verOffset = nAgt.indexOf('Edge')) != -1) {
40            browser = 'Microsoft Legacy Edge';
41            version = nAgt.substring(verOffset + 5);
42        } 
43        // Edge (Chromium)
44        else if ((verOffset = nAgt.indexOf('Edg')) != -1) {
45            browser = 'Microsoft Edge';
46            version = nAgt.substring(verOffset + 4);
47        }
48        // MSIE
49        else if ((verOffset = nAgt.indexOf('MSIE')) != -1) {
50            browser = 'Microsoft Internet Explorer';
51            version = nAgt.substring(verOffset + 5);
52        }
53        // Chrome
54        else if ((verOffset = nAgt.indexOf('Chrome')) != -1) {
55            browser = 'Chrome';
56            version = nAgt.substring(verOffset + 7);
57        }
58        // Safari
59        else if ((verOffset = nAgt.indexOf('Safari')) != -1) {
60            browser = 'Safari';
61            version = nAgt.substring(verOffset + 7);
62            if ((verOffset = nAgt.indexOf('Version')) != -1) {
63                version = nAgt.substring(verOffset + 8);
64            }
65        }
66        // Firefox
67        else if ((verOffset = nAgt.indexOf('Firefox')) != -1) {
68            browser = 'Firefox';
69            version = nAgt.substring(verOffset + 8);
70        }
71        // MSIE 11+
72        else if (nAgt.indexOf('Trident/') != -1) {
73            browser = 'Microsoft Internet Explorer';
74            version = nAgt.substring(nAgt.indexOf('rv:') + 3);
75        }
76        // Other browsers
77        else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
78            browser = nAgt.substring(nameOffset, verOffset);
79            version = nAgt.substring(verOffset + 1);
80            if (browser.toLowerCase() == browser.toUpperCase()) {
81                browser = navigator.appName;
82            }
83        }
84        // trim the version string
85        if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix);
86        if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix);
87        if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix);
88
89        majorVersion = parseInt('' + version, 10);
90        if (isNaN(majorVersion)) {
91            version = '' + parseFloat(navigator.appVersion);
92            majorVersion = parseInt(navigator.appVersion, 10);
93        }
94
95        // mobile version
96        var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);
97
98        // cookie
99        var cookieEnabled = (navigator.cookieEnabled) ? true : false;
100
101        if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) {
102            document.cookie = 'testcookie';
103            cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false;
104        }
105
106        // system
107        var os = unknown;
108        var clientStrings = [
109            {s:'Windows 10', r:/(Windows 10.0|Windows NT 10.0)/},
110            {s:'Windows 8.1', r:/(Windows 8.1|Windows NT 6.3)/},
111            {s:'Windows 8', r:/(Windows 8|Windows NT 6.2)/},
112            {s:'Windows 7', r:/(Windows 7|Windows NT 6.1)/},
113            {s:'Windows Vista', r:/Windows NT 6.0/},
114            {s:'Windows Server 2003', r:/Windows NT 5.2/},
115            {s:'Windows XP', r:/(Windows NT 5.1|Windows XP)/},
116            {s:'Windows 2000', r:/(Windows NT 5.0|Windows 2000)/},
117            {s:'Windows ME', r:/(Win 9x 4.90|Windows ME)/},
118            {s:'Windows 98', r:/(Windows 98|Win98)/},
119            {s:'Windows 95', r:/(Windows 95|Win95|Windows_95)/},
120            {s:'Windows NT 4.0', r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},
121            {s:'Windows CE', r:/Windows CE/},
122            {s:'Windows 3.11', r:/Win16/},
123            {s:'Android', r:/Android/},
124            {s:'Open BSD', r:/OpenBSD/},
125            {s:'Sun OS', r:/SunOS/},
126            {s:'Chrome OS', r:/CrOS/},
127            {s:'Linux', r:/(Linux|X11(?!.*CrOS))/},
128            {s:'iOS', r:/(iPhone|iPad|iPod)/},
129            {s:'Mac OS X', r:/Mac OS X/},
130            {s:'Mac OS', r:/(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},
131            {s:'QNX', r:/QNX/},
132            {s:'UNIX', r:/UNIX/},
133            {s:'BeOS', r:/BeOS/},
134            {s:'OS/2', r:/OS\/2/},
135            {s:'Search Bot', r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}
136        ];
137        for (var id in clientStrings) {
138            var cs = clientStrings[id];
139            if (cs.r.test(nAgt)) {
140                os = cs.s;
141                break;
142            }
143        }
144
145        var osVersion = unknown;
146
147        if (/Windows/.test(os)) {
148            osVersion = /Windows (.*)/.exec(os)[1];
149            os = 'Windows';
150        }
151
152        switch (os) {
153            case 'Mac OS':
154            case 'Mac OS X':
155            case 'Android':
156                osVersion = /(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\.\_\d]+)/.exec(nAgt)[1];
157                break;
158
159            case 'iOS':
160                osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);
161                osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0);
162                break;
163        }
164        
165        // flash (you'll need to include swfobject)
166        /* script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" */
167        var flashVersion = 'no check';
168        if (typeof swfobject != 'undefined') {
169            var fv = swfobject.getFlashPlayerVersion();
170            if (fv.major > 0) {
171                flashVersion = fv.major + '.' + fv.minor + ' r' + fv.release;
172            }
173            else  {
174                flashVersion = unknown;
175            }
176        }
177    }
178
179    window.jscd = {
180        screen: screenSize,
181        browser: browser,
182        browserVersion: version,
183        browserMajorVersion: majorVersion,
184        mobile: mobile,
185        os: os,
186        osVersion: osVersion,
187        cookies: cookieEnabled,
188        flashVersion: flashVersion
189    };
190}(this));
191
192/*
193alert(
194    'OS: ' + jscd.os +' '+ jscd.osVersion + '\n' +
195    'Browser: ' + jscd.browser +' '+ jscd.browserMajorVersion +
196      ' (' + jscd.browserVersion + ')\n' + 
197    'Mobile: ' + jscd.mobile + '\n' +
198    'Flash: ' + jscd.flashVersion + '\n' +
199    'Cookies: ' + jscd.cookies + '\n' +
200    'Screen Size: ' + jscd.screen + '\n\n' +
201    'Full User Agent: ' + navigator.userAgent
202);
203*/

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.