“Chrome.tabs 不受支持...”

“Chrome.tabs 不受支持...”

我总是在 Chrome 的控制台中收到此错误。

Uncaught Error: chrome.tabs is not supported in content scripts. See the content scripts documentation for more details.

但一切正常。

谁知道这是什么原因造成的以及我该如何解决?

答案1

通常,原因是扩展程序出现问题。我的情况是“MeasureIt!”。要确定哪个扩展程序出现问题,您可以

逐个停用它们并测试

  1. 停用所有扩展
  2. 确保错误已经消失
  3. 逐个激活扩展
  4. 测试错误是否再次出现,从步骤 3 开始重复

或者

搜索他们的源代码

  1. 打开chrome://extensions
  2. 在右上角激活“开发者模式”
  3. 现在你可以打开background.html每个扩展
  4. Ctrl+F,输入“chrome.tabs”搜索可疑代码点
  5. 向扩展程序创建者提供反馈

答案2

您不能chrome.tabs在内容脚本中使用。根据文档

...内容脚本有一些限制。它们不能:

  • 使用 chrome.* API(chrome.extension 的部分除外)
  • 使用扩展程序页面定义的变量或函数
  • 使用网页或其他内容脚本定义的变量或函数

因此,您只能chrome.tabs在后台页面或其他扩展页面中使用该 API。您可以使用扩展消息传递请求背景页面使用chrome.tabs

答案3

这是由于扩展使用了权限chrome.tabs,但未在扩展的软件包中指定这样做而导致manifest.json的。诀窍不仅在于找到使用 的扩展chrome.tabs,还在于找到未声明使用 的扩展。

从更自动化的方法开始(为了便于阅读,使用多行命令):在 *nix 上:

$ find . -type f \
> | xargs grep -l chrome.tabs \
> | cut -d '/' -f 2 \
> | uniq

在 Windows 上,使用 PowerShell:

> gci -rec |? {-not $_.PSIsContainer} `
>> | sls 'chrome.tabs' `
>> | select -Unique Path `
>> |% {$_.Path.Split('\')[10] } `
>> | select -Unique
>>

然后转到chrome://extensions选项卡以将结果中的目录与扩展名进行匹配,然后单击每个目录的权限以查看谁没有遵守其使用规定。请注意,在 PowerShell 代码片段的第 4 行,我索引了“10”,因为这是从目录到目录chrome.tabs的路径组件数;您的系统上可能会有所不同。C:\Extensions

就我而言,我通过在管道中添加更多段来实现完全自动化的搜索:

$ find . type f \
> | xargs grep -l chrome.tabs \
> | cut -d '/' -f 2 \
> | uniq \
> | xargs -I % find % -name 'manifest.json' \
> | xargs grep -L tabs
hipbfijinpcgfogaopmgehiegacbhmob/16.0.544_0/manifest.json
hipbfijinpcgfogaopmgehiegacbhmob/17.1_0/manifest.json
hipbfijinpcgfogaopmgehiegacbhmob/18.1_0/manifest.json

现在来看chrome://extensions

在此处输入图片描述

破产了。

在此处输入图片描述

相关内容