diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bg/css/settings.css | 2 | ||||
-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 |
4 files changed, 30 insertions, 34 deletions
diff --git a/ext/bg/css/settings.css b/ext/bg/css/settings.css index 7659f6f2..1b945310 100644 --- a/ext/bg/css/settings.css +++ b/ext/bg/css/settings.css @@ -208,6 +208,7 @@ input[type=checkbox].storage-button-checkbox { } html:root[data-browser=edge] [data-show-for-browser~=edge], +html:root[data-browser=edge-legacy] [data-show-for-browser~=edge-legacy], html:root[data-browser=chrome] [data-show-for-browser~=chrome], html:root[data-browser=firefox] [data-show-for-browser~=firefox], html:root[data-browser=firefox-mobile] [data-show-for-browser~=firefox-mobile], @@ -221,6 +222,7 @@ html:root[data-operating-system=openbsd] [data-show-for-operating-system~=openbs } html:root[data-browser=edge] [data-hide-for-browser~=edge], +html:root[data-browser=edge-legacy] [data-hide-for-browser~=edge-legacy], html:root[data-browser=chrome] [data-hide-for-browser~=chrome], html:root[data-browser=firefox] [data-hide-for-browser~=firefox], html:root[data-browser=firefox-mobile] [data-hide-for-browser~=firefox-mobile], 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() { |