每个选项卡使用chrome.browserAction.setPopup

Joh*_*lum 6 google-chrome google-chrome-extension

我正在编写一个Chrome扩展程序,它会根据当前网址动态更改弹出窗口的内容.

我在background.js中做了类似的事情,这很好用:

if(domains.contains(request.url)){
    chrome.browserAction.setPopup({
        popup: "tracking.html"
    });
}else{
    chrome.browserAction.setPopup({
        popup: "nottracking.html"
    });
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我切换选项卡,弹出窗口的内容在选项卡之间保持不变.处理这个问题的正确策略是什么?

  • 以某种方式陷入标签更改事件(如果存在这种可能性)?
  • 将弹出内容的更改限制为当前选项卡?(我注意到tabIdchrome.browserAction.setPopup 有一个可选参数,但文档有点不足)
  • 别的什么?

非常感谢所有人的帮助!

Rob*_*b W 7

选项1,绑定事件监听器:

使用chrome.tabs.onUpdated侦听URI的变化,其次是chrome.browserAction.setPopup给定的tabId,设置弹出对于给定的标签.例如:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (domains.contains(tab.url)) {
        chrome.browserAction.setPopup({
            tabId: tabId,
            popup: 'tracking.html'
        });
    } else {
        chrome.browserAction.setPopup({
            tabId: tabId,
            popup: 'nottracking.html'
        });
    }
});
Run Code Online (Sandbox Code Playgroud)