如何在客户端停止或修改 JavaScript 执行 简介 在某些场景下,您可能需要停止或更改客户端环境上特定 JavaScript 函数的执行。这可能有多种原因,例如删除不需要的功能或调整动态元素的行为。 停止 JavaScript 执行 对于 Firefox 等现代浏览器,beforescriptexecute 事件可用于在 JavaScript 执行发生之前拦截并阻止其执行。这允许您定位特定的基于其内容或源 URL 的标签或元素。</p> <p>要实现此方法,您可以使用如下 JavaScript 函数:</p> <pre>function checkForBadJavascripts(controlArray) { for (var J = controlArray.length - 1; J >= 0; --J) { var bSearchSrcAttr = controlArray[J][0]; var identifyingRegex = controlArray[J][1]; if (bSearchSrcAttr) { if (identifyingRegex.test(zEvent.target.src)) { stopBadJavascript(J); return false; } } else { if (identifyingRegex.test(zEvent.target.textContent)) { stopBadJavascript(J); return false; } } } }</pre> <p>controlArray 参数允许您定义模式和匹配脚本的相应操作。例如,您可以制定一条规则,在源 URL 与特定模式匹配时停止脚本的执行:</p> <pre>checkForBadJavascripts([ [true, /evilExternalJS/i, null] ]);</pre> <p><strong>修改 JavaScript 函数行为</strong></p> <p>如果您需要修改特定 JavaScript 函数的行为,可以使用动态 JavaScript 技术来注入或覆盖该函数的代码。</p> <p>实现此目的的一种方法是使用 [Greasemonkey](https: //github.com/greasemonkey/greasemonkey):</p> <pre>GM_overrideFunction(window.init, function() { // Override the existing init function and modify its behavior as needed });</pre> <p>或者,您可以使用 addJS_Node 函数插入一个执行自定义代码的新 JavaScript 节点:</p> <pre>addJS_Node('alert("Hooray, you are a millionaire!")');</pre> <p><strong>浏览器兼容性</strong></p> <p>请注意,虽然 Firefox 支持 beforescriptexecute 事件,但目前在 Chrome 等其他浏览器中尚不支持。对于 Firefox 以外的浏览器,您可能需要使用完整的浏览器扩展才能实现所需的功能。</p>