0

私が求めているのは非常に単純です。ページから送信された xmlHttpRequests をインターセプトし、それをローカル サーバーに送信して、テキスト ファイルに記録します。しかし、明らかに、Ajax 呼び出しはイベント リスナーでは機能しません... いくつかの解決策を見つけ、試し、試し、試しました... 解決策を探すために 1 日を費やしました。コードは次のとおりです。

var ajaxQueue = [];
var processAjaxQueue = function(){
  if (ajaxQueue.length > 0) {
    for (ajax in ajaxQueue) {
      var obj = ajaxQueue[ajax];
      setTimeOut(function(){GM_xmlhttpRequest(obj);},0);
    }
    ajaxQueue = [];
  }
}
setInterval(function(){
  processAjaxQueue();
}, 100);
function gmAjax(obj){
  ajaxQueue.push(obj);
}

function envoiData(donnees)
{
                setTimeout(function() {gmAjax({
                    method: "POST",
                    url: "http://127.0.0.1/log/index.php",
                    data: "prix="+donnees,
                    headers: {"Content-Type": "application/x-www-form-urlencoded"},
                    onload: function(reponse){alert('Chargé ! '+reponse.responseText);}
                });}, 0);
}

(function(open) {
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
        this.addEventListener("readystatechange", function() {
            console.log(this.readyState);
            if(this.readyState == 4)
            {
                alert(this.responseText);
                envoiData(this.responseText);
        }
        }, false);
        open.call(this, method, url, async, user, pass);
    };
})(XMLHttpRequest.prototype.open);

私は本当に問題が何であるかを理解していません。gmAjax のアイデアは、グリースモンキー スクリプトが実行されてすぐに停止するため、addevent リスナーを使用することは不可能であると述べているサイトから来ています。

エラー コンソールにエラーはなく、リクエストはイベント リスナーの外でも機能します。

助けていただければ幸いです^^

4

1 に答える 1