diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index ac6a261c0..babdd1230 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -491,6 +491,7 @@ /// requestAnimationFrame-if.js /// alias raf-if.js +// Deprecated, use "no-requestAnimationFrame-if.js" (function() { let needle = '{{1}}'; const not = needle.charAt(0) === '!'; @@ -518,6 +519,38 @@ })(); +/// no-requestAnimationFrame-if.js +/// alias norafif.js +(function() { + let needle = '{{1}}'; + if ( needle === '{{1}}' ) { needle = ''; } + const needleNot = needle.charAt(0) === '!'; + if ( needleNot ) { needle = needle.slice(1); } + if ( needle.startsWith('/') && needle.endsWith('/') ) { + needle = needle.slice(1, -1); + } else if ( needle !== '' ) { + needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + } + const log = needleNot === false && needle === '' ? console.log : undefined; + const reNeedle = new RegExp(needle); + window.requestAnimationFrame = new Proxy(window.requestAnimationFrame, { + apply: function(target, thisArg, args) { + const a = String(args[0]); + let defuse = false; + if ( log !== undefined ) { + log('uBO: requestAnimationFrame("%s")', a); + } else { + defuse = reNeedle.test(a) !== needleNot; + } + if ( defuse ) { + args[0] = function(){}; + } + return target.apply(thisArg, args); + } + }); +})(); + + /// set-constant.js /// alias set.js (function() {