From 49d9929191461cc8534ebf5707d94a5970945bde Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Wed, 18 Mar 2020 09:44:18 -0400 Subject: [PATCH] Add remove-class scriptlet (alias: rc) Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/935 Arguments are similar to that of remove-attr scriptlet. --- assets/resources/scriptlets.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 3c934deb2..ac6a261c0 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -458,6 +458,37 @@ })(); +/// remove-class.js +/// alias rc.js +(function() { + const token = '{{1}}'; + if ( token === '' || token === '{{1}}' ) { return; } + const tokens = token.split(/\s*\|\s*/); + let selector = '{{2}}'; + if ( selector === '' || selector === '{{2}}' ) { + selector = '.' + tokens.map(a => CSS.escape(a)).join(',.'); + } + const rmclass = function() { + try { + const nodes = document.querySelectorAll(selector); + for ( const node of nodes ) { + node.classList.remove(...tokens); + } + } catch(ex) { + } + }; + if ( document.readyState === 'loading' ) { + window.addEventListener( + 'DOMContentLoaded', + rmclass, + { capture: true, once: true } + ); + } else { + rmclass(); + } +})(); + + /// requestAnimationFrame-if.js /// alias raf-if.js (function() {