let __scripts = []; function registerScript(func, pattern = '.*') { __scripts.push({ "function": func, "pattern": pattern }); } function runScripts(node) { __scripts.forEach(script => { if (window.location.pathname.match(script.pattern)) { script.function(node); } }); } let observer = new MutationObserver(mutations => { mutations.forEach(mutation => { for (let i = 0; i < mutation.addedNodes.length; i++) { runScripts(mutation.addedNodes[i]); } }); }); observer.observe(document.documentElement || document.body, { childList: true, subtree: true, attributes: true });