XMLHttpRequest原型重写未调用

时间:2018-10-10 05:15:58

标签: google-chrome-extension

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

0 个答案:

没有答案