| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- /* global navigator */
- /**
- * Returns the name of the browser in which code is executed based on `window.navigator` object.
- *
- * @returns {String|null} Lowercase browser name or null if non-standard browser is used.
- */
- export function getBrowserName() {
- const browsers = detectBrowsers( navigator );
- const browser = Object.keys( browsers ).filter( browserName => !!browsers[ browserName ] );
- return browser.length ? browser[ 0 ] : null;
- }
- // Checks if current browser is one of the predefined ones (Chrome, Edge, Firefox, IE, Safari).
- //
- // @param {Navigator} navigator Browser `window.navigator` object on which detection is based.
- // @returns {{chrome: Boolean, edge: Boolean, firefox: Boolean, ie: Boolean, safari: Boolean}}
- function detectBrowsers( navigator ) {
- const agent = navigator.userAgent.toLowerCase();
- const edge = agent.match( /edge[ /](\d+.?\d*)/ );
- const trident = agent.indexOf( 'trident/' ) > -1;
- const ie = !!( edge || trident );
- const webkit = !ie && ( agent.indexOf( ' applewebkit/' ) > -1 );
- const gecko = navigator.product === 'Gecko' && !webkit && !ie;
- const chrome = webkit && agent.indexOf( 'chrome' ) > -1;
- return {
- chrome,
- edge: !!edge,
- firefox: gecko,
- ie,
- safari: webkit && !chrome,
- };
- }
|