“O Chrome.tabs não é suportado…”

15

Eu sempre recebo esse erro no console do Chrome.

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

Mas tudo funciona bem.

Alguém sabe o que está causando isso e como posso resolvê-lo?

    
por 8k_of_power 04.08.2011 / 07:23

3 respostas

36

Normalmente, a causa é uma extensão mal-comportada. No meu caso, foi "MeasureIt!". Para identificar qual extensão está causando problemas, você pode

desativá-los um por um e testar

  1. desativar todas as extensões
  2. verifique se o erro desapareceu
  3. ativar as extensões uma a uma
  4. teste se o erro reaparecer, repita a partir do passo 3

ou

pesquise seu código-fonte

  1. abrir chrome://extensions
  2. ativar "modo de desenvolvedor" no canto superior direito
  3. agora você pode abrir background.html para cada extensão
  4. Ctrl + F, digite "chrome.tabs" para pesquisar por pontos de códigos suspeitos
  5. dê feedback ao criador da extensão
por 25.08.2011 / 16:21
7

Você não pode usar chrome.tabs em scripts de conteúdo. De acordo com a documentação ,

...content scripts have some limitations. They cannot:

  • Use chrome.* APIs (except for parts of chrome.extension)
  • Use variables or functions defined by their extension's pages
  • Use variables or functions defined by web pages or by other content scripts

Assim, você só pode usar a chrome.tabs API em páginas de plano de fundo ou outras páginas de extensão. Você pode usar a passagem de mensagem de extensão para solicitar que uma página de plano de fundo use chrome.tabs .

    
por 04.08.2011 / 13:17
1

Isso é causado por uma extensão usando a permissão chrome.tabs , mas sem especificar que isso é feito no manifest.json empacotado com a extensão. O truque não é apenas encontrar a extensão que usa chrome.tabs , mas encontrar aquela que o faz sem anunciá-la.

Comece com uma abordagem mais automatizada (comandos de várias linhas para legibilidade): No * nix:

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

No Windows, usando o PowerShell:

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

Em seguida, vá para a guia chrome://extensions para corresponder os diretórios nos resultados aos nomes das extensões e clique nas permissões de cada um para ver quem não está usando o chrome.tabs . Observe que na quarta linha do snippet do PowerShell, eu indexo '10' porque é quantos componentes de caminho existem de C:\ para o diretório Extensions ; pode ser diferente no seu sistema.

No meu caso, eu automatizei totalmente a pesquisa adicionando mais segmentos ao pipeline:

$ 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

Agora, procurando em chrome://extensions :

Busted.

    
por 08.08.2013 / 18:18