zotero-web-library
Version:
Web library from zotero.org
100 lines (96 loc) • 3.07 kB
JavaScript
'use strict';
var log = require('libzotero/lib/Log').Logger('zotero-web-library:BrowserDetect');
var BrowserDetect = {
init: function init() {
this.browser = this.searchString(this.dataBrowser) || 'An unknown browser';
this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || 'an unknown version';
this.OS = this.searchString(this.dataOS) || 'an unknown OS';
},
searchString: function searchString(data) {
for (var i = 0; i < data.length; i++) {
var dataString = data[i].string;
var dataProp = data[i].prop;
this.versionSearchString = data[i].versionSearch || data[i].identity;
if (dataString) {
if (dataString.indexOf(data[i].subString) != -1) return data[i].identity;
} else if (dataProp) return data[i].identity;
}
},
searchVersion: function searchVersion(dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index == -1) return;
return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
},
dataBrowser: [{
string: navigator.userAgent,
subString: 'Chrome',
identity: 'Chrome'
}, { string: navigator.userAgent,
subString: 'OmniWeb',
versionSearch: 'OmniWeb/',
identity: 'OmniWeb'
}, {
string: navigator.vendor,
subString: 'Apple',
identity: 'Safari',
versionSearch: 'Version'
}, {
prop: window.opera,
identity: 'Opera',
versionSearch: 'Version'
}, {
string: navigator.vendor,
subString: 'iCab',
identity: 'iCab'
}, {
string: navigator.vendor,
subString: 'KDE',
identity: 'Konqueror'
}, {
string: navigator.userAgent,
subString: 'Firefox',
identity: 'Firefox'
}, {
string: navigator.vendor,
subString: 'Camino',
identity: 'Camino'
}, { // for newer Netscapes (6+)
string: navigator.userAgent,
subString: 'Netscape',
identity: 'Netscape'
}, {
string: navigator.userAgent,
subString: 'MSIE',
identity: 'Explorer',
versionSearch: 'MSIE'
}, {
string: navigator.userAgent,
subString: 'Gecko',
identity: 'Mozilla',
versionSearch: 'rv'
}, { // for older Netscapes (4-)
string: navigator.userAgent,
subString: 'Mozilla',
identity: 'Netscape',
versionSearch: 'Mozilla'
}],
dataOS: [{
string: navigator.platform,
subString: 'Win',
identity: 'Windows'
}, {
string: navigator.platform,
subString: 'Mac',
identity: 'Mac'
}, {
string: navigator.userAgent,
subString: 'iPhone',
identity: 'iPhone/iPod'
}, {
string: navigator.platform,
subString: 'Linux',
identity: 'Linux'
}]
};
BrowserDetect.init();
module.exports = BrowserDetect;