From 4d8ee35ef703d704aaad8f4fcb6f954b77b8a566 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 5 May 2024 11:46:16 -0400 Subject: [PATCH] Improve `noeval-if` scriptlet Related feedback: https://github.com/uBlockOrigin/uBlock-discussions/discussions/841#discussioncomment-9320245 --- assets/resources/scriptlets.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index ae1ab4362..84ac1b224 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -2015,12 +2015,19 @@ function noEvalIf( ) { if ( typeof needle !== 'string' ) { return; } const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('noeval-if', needle); const reNeedle = safe.patternToRegex(needle); window.eval = new Proxy(window.eval, { // jshint ignore: line apply: function(target, thisArg, args) { - const a = args[0]; - if ( reNeedle.test(a.toString()) ) { return; } - return target.apply(thisArg, args); + const a = String(args[0]); + if ( needle !== '' && reNeedle.test(a) ) { + safe.uboLog(logPrefix, 'Prevented:\n', a); + return; + } + if ( needle === '' || safe.logLevel > 1 ) { + safe.uboLog(logPrefix, 'Not prevented:\n', a); + } + return Reflect.apply(target, thisArg, args); } }); }