使用XMLhttprequest对象的Chrome扩展程序消息传输时间超过一次

时间:2015-06-14 09:33:20

标签: javascript google-chrome google-chrome-extension xmlhttprequest

我正在开发一个chrome扩展(开发人员工具)并直接在网站上注入一些代码:

(function (send) {

    XMLHttpRequest.prototype.send = function (method, url, async) {


        send.call(this, method, url, false);

        document.dispatchEvent(new CustomEvent('data', {

            detail: {
                data_1: 'hello world'
            }

        }));

    };


})(XMLHttpRequest.prototype.send);

此代码侦听来自网站的GET请求,然后将消息(通过内容脚本)发送到我的消息脚本。问题是消息堆积如山。因此,在第一个请求中,我收到1条消息,在第二个请求中,我得到2条消息,总共产生3条消息,然后是6条,依此类推。为什么会这样堆积?

消息通过"内容"脚本:

document.addEventListener('data_2', function(e) { 

sendObjectToDevTools({data_3: e.detail.data_1 });

});

然后最终收到" message"脚本:

port.onMessage.addListener(function(message) {

...

if (message.data_3) {

//do stuff

...

PS。这不是iframe问题或多次加载的脚本。

0 个答案:

没有答案