ホームページ >ウェブフロントエンド >jsチュートリアル >Web ページ上のすべての AJAX リクエストをインターセプトするにはどうすればよいでしょうか?

Web ページ上のすべての AJAX リクエストをインターセプトするにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 14:21:02785ブラウズ

How Can You Intercept All AJAX Requests on a Web Page?

ページ上のすべての AJAX リクエストへのフック

追加のアクションを実行するために AJAX リクエストを変更することは、デバッグ、分析、またはその他の目的で重要になる場合があります。 。ただし、ページ上で異なる AJAX ライブラリを使用する複数のサードパーティ スクリプトがある場合、それらをすべてインターセプトするのは困難に見える場合があります。

AJAX リクエストのインターセプト

すべての AJAX を監視するにはリクエストを行うには、XMLHttpRequest オブジェクトを利用できます。複数のライブラリでも機能する堅牢なソリューションを次に示します。

(function() {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        console.log('request started!');
        this.addEventListener('load', function() {
            console.log('request completed!');
            console.log(this.readyState); //will always be 4 (ajax is completed successfully)
            console.log(this.responseText); //whatever the response was
        });
        origOpen.apply(this, arguments);
    };
})();

このコードは、XMLHttpRequest の open メソッドをオーバーライドして、load イベントのイベント リスナーを登録します。リクエストが開始されると、開始時刻が記録されます。リクエストが完了すると、終了時刻、準備完了状態、および応答テキストが記録されます。

注: このメソッドはネイティブのフェッチ リクエストでは機能しないことに注意してください。ただし、必要に応じて、フェッチに同様のプロキシ アプローチを採用できます。

以上がWeb ページ上のすべての AJAX リクエストをインターセプトするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。