Skip to content

Instantly share code, notes, and snippets.

@rozek
Last active May 23, 2020 03:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rozek/c3beec7791c19ead162949974940ba1e to your computer and use it in GitHub Desktop.
Save rozek/c3beec7791c19ead162949974940ba1e to your computer and use it in GitHub Desktop.
ISD Extension BrowserName
//----------------------------------------------------------------------------//
// ISD.BrowserName //
//----------------------------------------------------------------------------//
// based on: https://github.com/keithws/browser-report
var UserAgent = {
Value: window.navigator.userAgent,
contains: function contains(ValueToSearchFor) {
return (this.Value.indexOf(ValueToSearchFor) >= 0);
},
lacks: function lacks(ValueToSearchFor) {
return (this.Value.indexOf(ValueToSearchFor) < 0);
},
match: function match(Pattern) {
return this.Value.match(Pattern);
},
matches: function matches(Pattern) {
return (this.Value.match(Pattern) != null);
},
};
var ISD_BrowserName = '(n/a)';
if (UserAgent.contains('Trident') || UserAgent.contains('MSIE')) {
ISD_BrowserName = (UserAgent.contains('Mobile') ? 'IE Mobile' : 'Internet Explorer');
}
if (UserAgent.contains('Firefox') && UserAgent.lacks('Seamonkey')) {
ISD_BrowserName = (UserAgent.contains('Android') ? 'Firefox for Android' : 'Firefox');
}
if (UserAgent.contains('Safari') && UserAgent.lacks('Chrome') &&
UserAgent.lacks('Chromium') && UserAgent.lacks('Android')) {
ISD_BrowserName = (UserAgent.contains('CriOS')
? 'Chrome for iOS'
: (UserAgent.contains('FxiOS') ? 'Firefox for iOS' : 'Safari'));
}
if (UserAgent.contains('Chrome')) {
if (UserAgent.matches(/\bChrome\/[.0-9]* Mobile\b/)) {
ISD_BrowserName = (UserAgent.matches(/\bVersion\/\d+\.\d+\b/) || UserAgent.matches(/\bwv\b/)
? 'WebView on Android'
: 'Chrome for Android');
}
else {
ISD_BrowserName = 'Chrome';
}
}
if (UserAgent.contains('Android') && UserAgent.lacks('Chrome') &&
UserAgent.lacks('Chromium') && UserAgent.lacks('Trident') &&
UserAgent.lacks('Firefox')) {
ISD_BrowserName = 'Android Browser';
}
if (UserAgent.contains('Edge')) {
ISD_BrowserName = 'Edge';
}
if (UserAgent.contains('UCBrowser')) {
ISD_BrowserName = 'UC Browser for Android';
}
if (UserAgent.contains('SamsungBrowser')) {
ISD_BrowserName = 'Samsung Internet';
}
if (UserAgent.contains('OPR') || UserAgent.contains('Opera')) {
ISD_BrowserName = (UserAgent.contains('Opera Mini')
? 'Opera Mini'
: (UserAgent.contains('Opera Mobi') ||
UserAgent.contains('Opera Tablet') ||
UserAgent.contains('Mobile')
? 'Opera Mobile'
: 'Opera'));
}
if (UserAgent.contains('BB10') || UserAgent.contains('PlayBook') || UserAgent.contains('BlackBerry')) {
ISD_BrowserName = 'Blackberry';
}
var global = (Function('return this'))();
(global.ISD || (global.ISD = {})).BrowserName = ISD_BrowserName;
//# sourceMappingURL=BrowserName.js.map
{"version":3,"file":"BrowserName.js","sourceRoot":"","sources":["BrowserName.ts"],"names":[],"mappings":"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"}
//----------------------------------------------------------------------------//
// ISD.BrowserName //
//----------------------------------------------------------------------------//
// based on: https://github.com/keithws/browser-report
const UserAgent = {
Value: window.navigator.userAgent,
contains: function contains (ValueToSearchFor:string):boolean {
return (this.Value.indexOf(ValueToSearchFor) >= 0)
},
lacks: function lacks (ValueToSearchFor:string):boolean {
return (this.Value.indexOf(ValueToSearchFor) < 0)
},
match: function match (Pattern:RegExp):any {
return this.Value.match(Pattern)
},
matches: function matches (Pattern:RegExp):boolean {
return (this.Value.match(Pattern) != null)
},
}
let ISD_BrowserName:string = '(n/a)'
if (UserAgent.contains('Trident') || UserAgent.contains('MSIE')) {
ISD_BrowserName = (UserAgent.contains('Mobile') ? 'IE Mobile' : 'Internet Explorer')
}
if (UserAgent.contains('Firefox') && UserAgent.lacks('Seamonkey')) {
ISD_BrowserName = (UserAgent.contains('Android') ? 'Firefox for Android' : 'Firefox')
}
if (
UserAgent.contains('Safari') && UserAgent.lacks('Chrome') &&
UserAgent.lacks('Chromium') && UserAgent.lacks('Android')
) {
ISD_BrowserName = (
UserAgent.contains('CriOS')
? 'Chrome for iOS'
: (UserAgent.contains('FxiOS') ? 'Firefox for iOS' : 'Safari')
)
}
if (UserAgent.contains('Chrome')) {
if (UserAgent.matches(/\bChrome\/[.0-9]* Mobile\b/)) {
ISD_BrowserName = (UserAgent.matches(/\bVersion\/\d+\.\d+\b/) || UserAgent.matches(/\bwv\b/)
? 'WebView on Android'
: 'Chrome for Android'
)
} else {
ISD_BrowserName = 'Chrome'
}
}
if (
UserAgent.contains('Android') && UserAgent.lacks('Chrome') &&
UserAgent.lacks('Chromium') && UserAgent.lacks('Trident') &&
UserAgent.lacks('Firefox')
) {
ISD_BrowserName = 'Android Browser'
}
if (UserAgent.contains('Edge')) {
ISD_BrowserName = 'Edge'
}
if (UserAgent.contains('UCBrowser')) {
ISD_BrowserName = 'UC Browser for Android'
}
if (UserAgent.contains('SamsungBrowser')) {
ISD_BrowserName = 'Samsung Internet'
}
if (UserAgent.contains('OPR') || UserAgent.contains('Opera')) {
ISD_BrowserName = (
UserAgent.contains('Opera Mini')
? 'Opera Mini'
: (
UserAgent.contains('Opera Mobi') ||
UserAgent.contains('Opera Tablet') ||
UserAgent.contains('Mobile')
? 'Opera Mobile'
: 'Opera'
)
)
}
if (UserAgent.contains('BB10') || UserAgent.contains('PlayBook') || UserAgent.contains('BlackBerry')) {
ISD_BrowserName = 'Blackberry'
}
const global = (Function('return this'))();
(global.ISD || (global.ISD = {})).BrowserName = ISD_BrowserName
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment