如何为每个标签独立运行Chrome扩展程序功能?

时间:2016-02-24 16:18:52

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

我一直在开发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') {
   }
});

manifest.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函数,那么运行其他选项卡{{1函数停止,反之亦然。

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码获取所有标签

100-200-300
200-400-500
200-500-300
300-400-500
400-500-300
undefined
stop
300-400-500
200-100-400