我正在尝试编写一个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操作,也永远不会登录到控制台。我在做什么错了?