Heim > Fragen und Antworten > Hauptteil
Ich möchte nur eine Funktion basierend auf dem Senden einer bestimmten XMLHttpRequest auslösen. Ich muss an der Anfrage nichts ändern oder etwas hinzufügen – ich löse einfach eine andere Funktion in meiner Codebasis aus. Die Anfrage wird von der Website gesendet, die meinen JS-Code einbettet. Ich habe keine Kontrolle über die gesamte Website. Ich habe den Interceptor so eingestellt, dass er für alle Anrufe funktioniert, aber ich weiß nicht genug darüber, um ihn anhand der folgenden Anforderungen einzugrenzen.
Required - If the Request URL contains get-users Required - If the Status Code: 200 Optional - If the Request Method: GET
Ich bin mir nicht sicher, ob ich send und send.call verwenden soll.
(function (send) { XMLHttpRequest.prototype.send = function (data) { console.log('Request', this); // If call url contains "get-users" && status code = 200 && possibly if the request method = get // { // MyFunction() // } send.call(this, data); }; })(XMLHttpRequest.prototype.send);
P粉2768766632024-04-04 12:24:48
您需要添加 if 条件来检查请求 URL 是否包含“get-users”且状态码是否为 200。
像下面的代码一样:-
(function (send) { XMLHttpRequest.prototype.send = function (data) { console.log('Request', this); this.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200 && this.responseURL.includes('get-users')) { MyFunction(); } }; send.call(this, data); }; })(XMLHttpRequest.prototype.send);