如何停止或修改客戶端JavaScript 執行
簡介
在某些場景下,您可能需要停止或變更客戶端環境上特定JavaScript 函數的執行。這可能有多種原因,例如刪除不需要的功能或調整動態元素的行為。
停止 JavaScript 執行
對於 Firefox 等現代瀏覽器,beforescriptexecute 事件可用於在 JavaScript 執行發生之前攔截並阻止其執行。這允許您根據內容或來源 URL 定位特定的
要實作此方法,您可以使用下列 JavaScript 函數:
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; } } } }
controlArray 參數可讓您定義符合腳本的模式和對應操作。例如,您可以製定一條規則,在來源 URL 與特定模式匹配時停止腳本的執行:
checkForBadJavascripts([ [true, /evilExternalJS/i, null] ]);
修改JavaScript 函數行為
如果您需要修改特定JavaScript 函數的行為,您可以使用動態JavaScript 技術來注入或覆蓋該函數的行為code .
執行此操作的一種方法是使用overrideFunction函數[Greasemonkey](https://github.com/greasemonkey/greasemonkey):
GM_overrideFunction(window.init, function() { // Override the existing init function and modify its behavior as needed });
或者,您可以使用addJS_Node 函數插入一個新的JavaScript 節點來執行您的自訂程式碼:
addJS_Node('alert("Hooray, you are a millionaire!")');
瀏覽器相容性
請注意,雖然beforescriptexecute 事件在 Firefox 中受支持,目前在 Chrome 等其他瀏覽器中尚不支援。對於 Firefox 以外的瀏覽器,您可能需要使用完整的瀏覽器擴充功能才能實現所需的功能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3