如何获取运行content.js的选项卡的选项卡ID?

时间:2016-12-31 19:54:20

标签: javascript google-chrome-extension

我正在制作一个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未定义。 我只是使用一个按钮来测试功能。

1 个答案:

答案 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