«Chrome.tabs не поддерживается…»

15

Я всегда получаю эту ошибку в консоли Chrome.

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

Но все работает отлично.

Кто-нибудь знает, что вызывает это и как я могу решить это?

8k_of_power
источник

Ответы:

36

Как правило, причиной является неправильное расширение. В моем случае это было «MeasureIt!». Чтобы определить, какое расширение создает проблемы, вы можете либо

отключить их по одному и проверить

  1. деактивировать все расширения
  2. убедитесь, что ошибка исчезла
  3. активировать расширения один за другим
  4. проверить, если ошибка появляется снова, повторите с шага 3

или

искать их исходный код

  1. открытый chrome://extensions
  2. активировать «Режим разработчика» в правом верхнем углу
  3. теперь вы можете открыть background.htmlдля каждого расширения
  4. Ctrl + F, введите «chrome.tabs» для поиска подозрительных участков кода
  5. оставить отзыв создателю расширения
geekQ
источник
8
Хороший :) Был "Мера!" для меня тоже ..
Эдди
7

Вы не можете использовать chrome.tabsв скриптах контента. Согласно документации ,

... у скриптов контента есть некоторые ограничения. Они не могут:

  • Используйте API-интерфейсы chrome. * (Кроме частей chrome.extension)
  • Используйте переменные или функции, определенные на страницах их расширения
  • Используйте переменные или функции, определенные веб-страницами или другими скриптами содержимого

Таким образом, вы можете использовать chrome.tabsAPI только на фоновых страницах или других страницах расширения. Вы можете использовать передачу сообщений расширения, чтобы запросить использование фоновой страницы chrome.tabs.

Цифровой самолет
источник
Я не понимаю, что использует chrome.tabs. Может ли это быть одним из моих расширений Chrome?
8k_of_power
3
Да, эта ошибка может быть вызвана только расширением Chrome (на данный момент).
5
Для меня это был MeasureIt! вызывая ошибку.
Джастин Булл
@weng Если вы все еще получаете сообщение об ошибке, попробуйте отключить некоторые расширения в группах и посмотреть, устранена ли ошибка.
MeasureIt! Также вызывает эту ошибку для. Не могу быть обеспокоен отладкой чужого кода, так что пока я просто терплю его.
1

Это вызвано расширением, использующим chrome.tabsразрешение, но без указания того, что это происходит в manifest.jsonпакете с расширением. Хитрость заключается не только в том, чтобы найти расширение, которое использует chrome.tabs, но и в том , чтобы найти то, которое делает это, не объявляя об этом.

Начните с более автоматизированного подхода (многострочные команды для удобочитаемости): On * 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вкладку, чтобы сопоставить каталоги в результатах с именами расширений, и щелкните разрешения каждого из них, чтобы увидеть, кто не использует их chrome.tabs. Обратите внимание, что в 4-й строке фрагмента PowerShell я индексирую «10», потому что именно столько компонентов пути идет от каталога 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:

введите описание изображения здесь

Разоренный.

введите описание изображения здесь

Бен Коллинз
источник