15

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

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

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

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

3 ответа3

36

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

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

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

или же

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

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

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

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

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

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

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:

Разоренный.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .