Я пытаюсь написать расширение для Chrome, чтобы отслеживать ответ XHR для определенного веб-сайта и записывать сообщения в консоль на основе содержимого ответа.Пока я просто пытаюсь получить ответ, но пока не удалось.
Вот мой manifest.json
файл:
{
"name": "XHR Listener",
"version": "0.0.1",
"manifest_version": 2,
"description": "Listening in on XHR responses",
"background": {
"scripts": ["background.js"],
"persistent": true
},
"browser_action": {
"default_title": "Listen!"
},
"permissions": [
"https://*/*",
"http://*/*"
]
}
Вот мой background.js
файл:
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.executeScript(tab.ib, {
file: 'inject.js'
});
});
А вот мой inject.js
файл:
console.log('In inject.js');
(function() {
console.log('In the function()');
const dummySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
console.log('inside send()');
const _onreadystatechange = this.onreadystatechange;
this.onreadystatechange = function () {
console.log('inside onreadystatechange()');
if (this.readyState === 4 && this.status === 200) {
console.log(this.response);
}
}
if (_onreadystatechange) {
_onreadystatechange.apply(this, arguments);
}
}
dummySend.apply(this, arguments);
})();
Когда я нажимаю на значок расширения, я получаю «In inject.js» и «In function ()»сообщения в консоли, но другие сообщения («Inside send ()» и «Inside onreadystatechange ()») никогда не регистрируются в консоли, даже если на вкладке «Сеть» инструментов разработчика отображаются многочисленные действия HMLHttpRequest.Что я делаю не так?