我正在制作一个Chrome扩展程序,一旦加载就关闭某个网站,并有一个content.js页面和一个background.js页面。 background.js页面正常工作,正在等待来自content.js的消息:
chrome.runtime.onMessage.addListener(function(msg, _, sendResponse) {
if (msg.closeTab) {
chrome.tabs.remove(msg.tabID);
}
});
在content.js中发送消息的代码是:
addButton("Close this tab.", function() {
chrome.runtime.sendMessage({closeTab: true, tabID: tab.id});
});
但我遇到的问题是tab
未定义。
我只是使用一个按钮来测试功能。
答案 0 :(得分:2)
在您的消息侦听器函数中,您可以使用第二个参数来检索调用者的选项卡ID,您无法从内容脚本中获取选项卡ID。
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse){
if (msg.closeTab){
chrome.tabs.remove(sender.tab.id)
}
});
而content.js将是
addButton("Close this tab", function(){
chrome.runtime.sendMessage({closeTab:true});
});
请参阅chrome.runtime.onMessage,尤其是第二个参数sender
。