Скрытые вкладки в расширениях Google Chrome - PullRequest
2 голосов
/ 11 ноября 2011

У меня есть расширение Chrome, которое отправляет сообщение из скрипта контента на фоновую страницу и регистрирует tab_id скрипта контента. Я заметил, что на google.com | de | at регистрируются два сообщения, поэтому создаются два скрипта контента: один для реальной веб-страницы, показанной на вкладке (например, https://www.google.com/search?q=python+standard+library), и другой скрипт контента для первого элемента в список результатов Google (в приведенном выше примере http://docs.python.org/library/)

Даже незнакомец - tab_id второго скрипта контента (скрытого) недопустим. То есть chrome.pageAction.hide (tab_id) приводит к появлению следующей ошибки:

Ошибка при pageAction.hide: нет вкладки с идентификатором: 71

Есть ли способ выяснить, относится ли скрипт содержимого к "скрытой" вкладке?

спасибо, Питер

1 Ответ

1 голос
/ 25 ноября 2011

Прежде всего, вы можете использовать onCreated и / или onUpdated для отслеживания вкладок и отображений URL без необходимости в скрипте содержимого.

Однако, если в вашем скрипте контента есть нечто большее, чем просто информирование фоновой страницы идентификатора вкладки, это может означать больше проверок.

Если ваш скрипт контента выполняется на all_frames, то вы будете получать сообщения от скрипта контента в верхнем окне и всех внутренних фреймах. Тем не менее, когда я тестирую пример реализации, я получаю одинаковые идентификаторы для всех них. Кроме того, ни один из них, по-видимому, не относится к записям в списке результатов поиска.

Если вы запускаете скрипт на всех вкладках, вы можете убедиться, что только верхнее окно отправит сообщение, обернув ваш sendRequest вызов if (window.top === window).

Возможно ли, что у вас запущено другое расширение, которое каким-то образом просматривает результаты Google? Это может иметь такой эффект ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...