diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-22 10:50:36 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-22 10:50:36 +0100 |
commit | 28a694e17c9b41e9b5585926091f5b70fedf558c (patch) | |
tree | c877c8961303fdd87184017791630bfd730ac205 /qutebrowser | |
parent | 222f1f19a1d43691e3d99ce544cff8c9730ae4b9 (diff) | |
download | qutebrowser-28a694e17c9b41e9b5585926091f5b70fedf558c.tar.gz qutebrowser-28a694e17c9b41e9b5585926091f5b70fedf558c.zip |
Add String.replaceAll polyfill
See #6047
Diffstat (limited to 'qutebrowser')
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 7 | ||||
-rw-r--r-- | qutebrowser/javascript/quirks/string_replaceall.user.js | 23 |
2 files changed, 30 insertions, 0 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index e6efe223b..c497f9b3b 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1144,6 +1144,13 @@ class _WebEngineScripts(QObject): QWebEngineScript.DocumentReady, QWebEngineScript.ApplicationWorld, ), + # FIXME not needed with 5.15.3 most likely, but how do we check for + # that? + ( + 'string_replaceall', + QWebEngineScript.DocumentCreation, + QWebEngineScript.MainWorld, + ), ] if not qtutils.version_check('5.13'): quirks.append(('globalthis', diff --git a/qutebrowser/javascript/quirks/string_replaceall.user.js b/qutebrowser/javascript/quirks/string_replaceall.user.js new file mode 100644 index 000000000..e2fd20be2 --- /dev/null +++ b/qutebrowser/javascript/quirks/string_replaceall.user.js @@ -0,0 +1,23 @@ +// Based on: https://vanillajstoolkit.com/polyfills/stringreplaceall/ +/* eslint-disable no-extend-native */ + +/** + * String.prototype.replaceAll() polyfill + * https://gomakethings.com/how-to-replace-a-section-of-a-string-with-another-one-with-vanilla-js/ + * @author Chris Ferdinandi + * @license MIT + */ + +"use strict"; + +if (!String.prototype.replaceAll) { + String.prototype.replaceAll = function(str, newStr) { + // If a regex pattern + if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]") { + return this.replace(str, newStr); + } + + // If a string + return this.replace(new RegExp(str, "g"), newStr); + }; +} |