我当前正在运行chrome扩展程序background.js脚本,该脚本内部是一个异步函数,该函数在for循环中运行,在该函数的中间,它转到一个URL,然后该URL运行一个内容脚本
这是for循环的样子:
var atc_count = 1;
for (i = 0; i < data.count; i++) {
console.log("waiting for getItem");
await getItem(atc_count);
atc_count++;
}
我当前正在运行chrome扩展程序background.js脚本,该脚本内部是一个异步函数,该函数在for循环中运行,在该函数的中间,它转到一个URL,然后该URL运行一个内容脚本
在函数中间,我想向atc_count的内容脚本发送一条消息,该内容脚本将使用atc_count并对其执行某些操作
这是我在后台脚本中尝试过的将atc_count发送到内容脚本的方法:
chrome.tabs.query({ currentWindow: true, active: true }, function(tab) {
chrome.tabs.update(tab[0].id, { url: color_url }, () => { // tab.id
chrome.tabs.sendMessage(tabs[0].id, {atc_count: atc_count}, function(response) {
console.log(response.go);
resolve("Updated the tab");
});
});
});
然后尝试使用以下内容在内容脚本中接收消息:
chrome.runtime.onMessage.addListener(
function(message, sender, sendResponse) {
console.log(message.atc_count);
sendResponse({go: "atc done!"});
});
这不起作用。
我想将atc_count从后台脚本发送到内容脚本,当该内容脚本收到此消息时,它应该使用atc_count做某事,然后在完成后将其发送回sendResponse以及后台脚本接收到此消息(sendResponse ),它知道内容脚本已完成并继续其循环。
所以我希望它在每个循环中只使用一次内容脚本,而每个循环中仅更改atc_count。
如果您需要更好地澄清我的问题,请lmk。
感谢您抽出宝贵的时间阅读本文,希望您能对我有所帮助。谢谢<3!