summaryrefslogtreecommitdiff
path: root/core/util/browser.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/util/browser.js')
-rw-r--r--core/util/browser.js63
1 files changed, 56 insertions, 7 deletions
diff --git a/core/util/browser.js b/core/util/browser.js
index 24b5e96..bbc9f5c 100644
--- a/core/util/browser.js
+++ b/core/util/browser.js
@@ -77,27 +77,76 @@ export const hasScrollbarGutter = _hasScrollbarGutter;
* It's better to use feature detection than platform detection.
*/
+/* OS */
+
export function isMac() {
- return navigator && !!(/mac/i).exec(navigator.platform);
+ return !!(/mac/i).exec(navigator.platform);
}
export function isWindows() {
- return navigator && !!(/win/i).exec(navigator.platform);
+ return !!(/win/i).exec(navigator.platform);
}
export function isIOS() {
- return navigator &&
- (!!(/ipad/i).exec(navigator.platform) ||
+ return (!!(/ipad/i).exec(navigator.platform) ||
!!(/iphone/i).exec(navigator.platform) ||
!!(/ipod/i).exec(navigator.platform));
}
+export function isAndroid() {
+ /* Android sets navigator.platform to Linux :/ */
+ return !!navigator.userAgent.match('Android ');
+}
+
+export function isChromeOS() {
+ /* ChromeOS sets navigator.platform to Linux :/ */
+ return !!navigator.userAgent.match(' CrOS ');
+}
+
+/* Browser */
+
export function isSafari() {
- return navigator && (navigator.userAgent.indexOf('Safari') !== -1 &&
- navigator.userAgent.indexOf('Chrome') === -1);
+ return !!navigator.userAgent.match('Safari/...') &&
+ !navigator.userAgent.match('Chrome/...') &&
+ !navigator.userAgent.match('Chromium/...') &&
+ !navigator.userAgent.match('Epiphany/...');
}
export function isFirefox() {
- return navigator && !!(/firefox/i).exec(navigator.userAgent);
+ return !!navigator.userAgent.match('Firefox/...') &&
+ !navigator.userAgent.match('Seamonkey/...');
+}
+
+export function isChrome() {
+ return !!navigator.userAgent.match('Chrome/...') &&
+ !navigator.userAgent.match('Chromium/...') &&
+ !navigator.userAgent.match('Edg/...') &&
+ !navigator.userAgent.match('OPR/...');
+}
+
+export function isChromium() {
+ return !!navigator.userAgent.match('Chromium/...');
}
+export function isOpera() {
+ return !!navigator.userAgent.match('OPR/...');
+}
+
+export function isEdge() {
+ return !!navigator.userAgent.match('Edg/...');
+}
+
+/* Engine */
+
+export function isGecko() {
+ return !!navigator.userAgent.match('Gecko/...');
+}
+
+export function isWebKit() {
+ return !!navigator.userAgent.match('AppleWebKit/...') &&
+ !navigator.userAgent.match('Chrome/...');
+}
+
+export function isBlink() {
+ return !!navigator.userAgent.match('Chrome/...');
+}