我正在开发一个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问题或多次加载的脚本。