diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-06-28 12:40:02 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-28 12:40:02 -0400 |
commit | 7b5dd5c310f7ec4d7f6e329367d34258cce10e8e (patch) | |
tree | 00151155ea5f3dc438c9230e485a72613a41d00f /ext/mixed | |
parent | cdf191336aa616a206b977ba3beeb1233cf41c32 (diff) |
Update browser compatibility and Edge detection (#629)
Diffstat (limited to 'ext/mixed')
-rw-r--r-- | ext/mixed/js/core.js | 32 | ||||
-rw-r--r-- | ext/mixed/js/environment.js | 11 | ||||
-rw-r--r-- | ext/mixed/js/yomichan.js | 19 |
3 files changed, 28 insertions, 34 deletions
diff --git a/ext/mixed/js/core.js b/ext/mixed/js/core.js index 9b3ea3e2..e22be33d 100644 --- a/ext/mixed/js/core.js +++ b/ext/mixed/js/core.js @@ -15,38 +15,6 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* - * Extension information - */ - -function _extensionHasChrome() { - try { - return typeof chrome === 'object' && chrome !== null; - } catch (e) { - return false; - } -} - -function _extensionHasBrowser() { - try { - return typeof browser === 'object' && browser !== null; - } catch (e) { - return false; - } -} - -const EXTENSION_IS_BROWSER_EDGE = ( - _extensionHasBrowser() && - (!_extensionHasChrome() || (typeof chrome.runtime === 'undefined' && typeof browser.runtime !== 'undefined')) -); - -if (EXTENSION_IS_BROWSER_EDGE) { - // Edge does not have chrome defined. - chrome = browser; -} - - /* * Error handling */ diff --git a/ext/mixed/js/environment.js b/ext/mixed/js/environment.js index 5bd84010..1f4038d2 100644 --- a/ext/mixed/js/environment.js +++ b/ext/mixed/js/environment.js @@ -67,8 +67,15 @@ class Environment { } async _getBrowser() { - if (EXTENSION_IS_BROWSER_EDGE) { - return 'edge'; + try { + if (chrome.runtime.getURL('/').startsWith('ms-browser-extension://')) { + return 'edge-legacy'; + } + if (/\bEdge?\//.test(navigator.userAgent)) { + return 'edge'; + } + } catch (e) { + // NOP } if (typeof browser !== 'undefined') { try { diff --git a/ext/mixed/js/yomichan.js b/ext/mixed/js/yomichan.js index 5fa504ef..ab1afcd9 100644 --- a/ext/mixed/js/yomichan.js +++ b/ext/mixed/js/yomichan.js @@ -15,6 +15,25 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +// Set up chrome alias if it's not available (Edge Legacy) +if ((() => { + let hasChrome = false; + let hasBrowser = false; + try { + hasChrome = (typeof chrome === 'object' && chrome !== null && typeof chrome.runtime !== 'undefined'); + } catch (e) { + // NOP + } + try { + hasBrowser = (typeof browser === 'object' && browser !== null && typeof browser.runtime !== 'undefined'); + } catch (e) { + // NOP + } + return (hasBrowser && !hasChrome); +})()) { + chrome = browser; +} + const yomichan = (() => { class Yomichan extends EventDispatcher { constructor() { |