我正在写一个Chrome扩展,它可以根据当前的URL动态地更改弹出窗口的内容。
我在background.js中做了类似这样的事情,它运行良好:
if(domains.contains(request.url)){
chrome.browserAction.setPopup({
popup: "tracking.html"
});
}else{
chrome.browserAction.setPopup({
popup: "nottracking.html"
});
}
问题是如果我切换标签页,弹出的内容在标签页之间保持不变。什么是正确的策略来处理这个问题?
- 以某种方式挂钩到选项卡更改事件(如果存在这种可能性)?
- 将弹出内容的更改限制在当前标签页?(我注意到chrome.browserAction.setPopup有一个可选的
tabId
参数,但是文档有点少) - 还有别的吗?
非常感谢所有的帮助!
3条答案
按热度按时间cfh9epnr1#
选项1,绑定事件监听器:
使用
chrome.tabs.onUpdated
侦听URI更改,然后使用chrome.browserAction.setPopup
和给定的tabId
设置给定选项卡的弹出窗口。例如:2ledvvac2#
只需将TabId传递给setPopup调用即可。http://code.google.com/chrome/extensions/browserAction.html
我经常在我的背景页面中这样做:
就像个护身符。
chy5wohz3#
setpopup
参数的对象现在支持tabId
值。您需要先获取当前选项卡的数字id。这不需要额外的权限。