Google chrome extension chrome.tabs.onCreated.addListener(函数(选项卡))不是';行不通

Google chrome extension chrome.tabs.onCreated.addListener(函数(选项卡))不是';行不通,google-chrome-extension,Google Chrome Extension,我希望每次打开一个新选项卡时x都增加。为什么不起作用 var x = 0; function increase(){ x++; } chrome.tabs.onCreated.addListener(function (tab) { increase(); }); 您的问题是,选项卡api不能在内容脚本中使用(请查看文档,了解哪些可以和哪些不能) 为了实现您的目标,您需要将制表符计数代码放在后台脚本中。如果需要访问内

我希望每次打开一个新选项卡时x都增加。为什么不起作用

    var x = 0;
    function increase(){
        x++;
   }
    chrome.tabs.onCreated.addListener(function (tab) {
            increase();
    });

您的问题是,
选项卡
api不能在内容脚本中使用(请查看文档,了解哪些可以和哪些不能)

为了实现您的目标,您需要将制表符计数代码放在后台脚本中。如果需要访问内容脚本中的变量
x
,则必须使用在后台和内容脚本之间传递数据

例如,每当打开新选项卡时,您可以将背景脚本设置为增加
x
,然后每当内容脚本需要此值时,它可以向背景脚本请求:

Background.js:

var x = 0;

function increase(){
  x++;
}

chrome.tabs.onCreated.addListener(function (tab) {
  increase();
});

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.action == "tabCount")
      sendResponse({count: x});
  });
Content-Script.js:

chrome.runtime.sendMessage({action: "tabCount"}, function(response) {
  console.log(response.count);
});

只是检查您是否已将“选项卡”权限添加到manifest.json文件中?如果您在Listener中添加了
console.log(“测试”)
或其他内容,是否会在控制台中打印?我确实拥有tabs权限。我如何检查它是否已打印?您使用的是chrome还是firefox,这段代码也是背景脚本还是内容脚本?我使用的是chrome,它是内容脚本谢谢您的帮助!!!但是,当我使用诸如chrome.tabs.onUpdated.addListener(函数(tab))之类的侦听器时,它会起作用但不适用于chrome.tabs.onCreated.addListener。对于未更新的侦听器,是否有任何特定的内容?这很有趣,因为根据google文档,内容脚本中应该禁止使用tabs api。可能有一个例外,即允许在内容脚本中触发未更新事件,以更新与该选项卡相关的内容帐篷脚本与关联,但这只是推测。消息传递不起作用,变量只是在后台和内容之间立即传递,没有消息传递