diff --git a/app/assets/javascripts/discourse/scripts/browser-detect.js b/app/assets/javascripts/discourse/scripts/browser-detect.js index 3b93c144997..86cce506a88 100644 --- a/app/assets/javascripts/discourse/scripts/browser-detect.js +++ b/app/assets/javascripts/discourse/scripts/browser-detect.js @@ -1,12 +1,24 @@ -if (!window.WeakMap || !window.Promise || typeof globalThis === "undefined") { - window.unsupportedBrowser = true; -} else { - // Some implementations of `WeakMap.prototype.has` do not accept false - // values and Ember's `isClassicDecorator` sometimes does that (it only - // checks for `null` and `undefined`). - try { - new WeakMap().has(0); - } catch (err) { +/* eslint-disable no-var */ // `let` is not supported in very old browsers + +(function () { + if (!window.WeakMap || !window.Promise || typeof globalThis === "undefined") { window.unsupportedBrowser = true; + } else { + // Some implementations of `WeakMap.prototype.has` do not accept false + // values and Ember's `isClassicDecorator` sometimes does that (it only + // checks for `null` and `undefined`). + try { + new WeakMap().has(0); + } catch (err) { + window.unsupportedBrowser = true; + } + + var match = window.navigator.userAgent.match(/Firefox\/([0-9]+)\./); + var firefoxVersion = match ? parseInt(match[1], 10) : null; + if (firefoxVersion && firefoxVersion < 89) { + // prior to v89, Firefox has bugs with document.execCommand("insertText") + // https://bugzil.la/1220696 + window.unsupportedBrowser = true; + } } -} +})();