From 8afd9e233d3c43f51d21e4e51d24e643089d9853 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 20 Jul 2024 08:57:11 -0400 Subject: [PATCH] Improve `trusted-replace-node-text` scriptlet Related discussion: https://github.com/uBlockOrigin/uAssets/discussions/23769#discussioncomment-10102276 --- assets/resources/scriptlets.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index 9678724cc..fa1457f87 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -714,7 +714,8 @@ function replaceNodeTextFn( const reNodeName = safe.patternToRegex(nodeName, 'i', true); const rePattern = safe.patternToRegex(pattern, 'gms'); const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const reCondition = safe.patternToRegex(extraArgs.condition || '', 'ms'); + const reIncludes = safe.patternToRegex(extraArgs.includes || extraArgs.condition || '', 'ms'); + const reExcludes = safe.patternToRegex(extraArgs.excludes || '', 'ms'); const stop = (takeRecord = true) => { if ( takeRecord ) { handleMutations(observer.takeRecords()); @@ -727,8 +728,10 @@ function replaceNodeTextFn( let sedCount = extraArgs.sedCount || 0; const handleNode = node => { const before = node.textContent; - reCondition.lastIndex = 0; - if ( safe.RegExp_test.call(reCondition, before) === false ) { return true; } + reIncludes.lastIndex = 0; + if ( safe.RegExp_test.call(reIncludes, before) === false ) { return true; } + reExcludes.lastIndex = 0; + if ( safe.RegExp_test.call(reExcludes, before) ) { return true; } rePattern.lastIndex = 0; if ( safe.RegExp_test.call(rePattern, before) === false ) { return true; } rePattern.lastIndex = 0;