クライアント側で JavaScript の実行を停止または変更する方法
概要
特定のシナリオ、クライアント側環境で特定の JavaScript 関数の実行を停止または変更する必要がある場合があります。これには、不要な機能の削除や動的要素の動作の調整など、さまざまな理由が考えられます。
JavaScript の実行の停止
Firefox などの最新のブラウザの場合、beforescriptexecute イベントJavaScript の実行を事前に傍受して阻止するために使用できます。これにより、特定の <script> をターゲットにすることができます。 </script>
このメソッドを実装するには、次のような 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 関数の動作の変更
If特定の JavaScript 関数の動作を変更する必要がある場合は、動的 JavaScript テクニックを使用して関数の動作を挿入またはオーバーライドできます。 code.
これを行う 1 つの方法は、[Greasemonkey](https://github.com/greasemonkey/greasemonkey) の overrideFunction 関数を使用することです。
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 以外のブラウザの場合、必要な機能を実現するには、完全なブラウザ拡張機能を使用する必要がある場合があります。
以上がクライアント側の JavaScript の実行を停止または変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。