gpt4 book ai didi

javascript - Chrome 扩展功能如何为每个选项卡独立运行?

转载 作者:行者123 更新时间:2023-12-03 07:36:06 27 4
gpt4 key购买 nike

我一直在开发 chrome 扩展来处理不同的选项卡 DOM,但到目前为止,扩展似乎一次只能处理一个选项卡。

background.js 具有以 10 秒间隔递归调用的方法:

function sendMessageScheduler()
{
console.log(tabId); // tab is created for each new tab

timer = setTimeout(function(){

chrome.tabs.sendMessage(tabId, {text: 'click_question',
currentTabId: tabId}, doStuffWithDom);
sendMessageScheduler();

}, 10000);
}

pop.js:

startButtonButton.addEventListener('click', function() {

chrome.extension.getBackgroundPage().sendMessageScheduler();

}, false);

contentscript.js:

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {

if (msg.text === 'click_question') {
}
});

ma​​nifest.json:

{
"manifest_version": 2,
"name": "Click Question",
"version": "1.0",
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"content_scripts": [{
"matches": ["*://*.stackoverflow.com/*"],
"js": ["contentscript.js"]
}],
"browser_action": {
"default_icon": "question.png",
"default_title": "Click Questions Plugin",
"default_popup": "popup.html"
},
"permissions": ["activeTab"]
}

在实现上述逻辑之前,我假设扩展将独立处理每个选项卡,但随着开发的进行,似乎如果我为一个选项卡执行 setTimeout 函数,那么其他选项卡就会运行 setTimeout 函数停止,反之亦然。

我该如何处理这种情况,以便不同的超时函数独立工作?

最佳答案

您可以使用以下代码获取所有选项卡

chrome.tabs.query({}, function(tabs) {
for (var i = 0; i < tabs.length; i++) {
var tabId = tabs[i].id;
// do what you want
}
});

关于javascript - Chrome 扩展功能如何为每个选项卡独立运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com