#google-chrome-extension
#google-chrome-extension
Вопрос:
Мне нужно сохранять некоторые данные каждый раз, когда я перехожу на какую-то другую вкладку в том же окне или в другом окне с помощью Chrome storage API или даже при создании новой вкладки. Итак, в основном, когда моя активная вкладка больше не активна.
Так, например, если я нахожусь на вкладке A, а затем перехожу на вкладку B (или создаю новую вкладку). Когда это переключение происходит с A на B, мне нужно сохранить данные с веб-сайта, работающего на вкладке A. (Я получаю данные с сайта на вкладке А с помощью скрипта содержимого.)
Более конкретным примером может быть, предположим, что я нахожусь на сайте YouTube, и у меня запущен таймер ожидания (с использованием скрипта контента). Поэтому, когда я перехожу на какой-то другой сайт, я хочу остановить время, получить текущее оставшееся время и сохранить его. и если другим сайтом тоже является YouTube (на вкладке B), я бы начал отсчет времени с ранее сохраненного значения.
Есть ли какой-нибудь прослушиватель событий для этого? Я просмотрел документацию chrome.tabs
, но не смог в этом разобраться. Я видел onActivated
прослушиватель событий, но я не уверен, что это было бы полезно. Или есть какой-то другой способ добиться этого?
Комментарии:
1. Используйте стандартное событие DOM
visibilitychange
и проверьте document.visibilityState. В сценарии содержимого.
Ответ №1:
Да, согласно документации onActivated
:
Срабатывает при изменении активной вкладки в окне.
В качестве альтернативы также можно использовать сценарии содержимого, которые уведомляют ваше расширение, когда страница получает или теряет фокус с помощью window.onfocus
и window.onblur
. Таким образом, вы сможете отслеживать видимость вкладок, хотя вам следует тщательно выбирать требуемое разрешение.
Комментарии:
1. 1) OnActivated не сообщает, какая вкладка была сфокусирована ранее, поэтому вам нужно описать, как отслеживать эту информацию, принимая во внимание, что фоновый скрипт может выгружаться тем временем, поэтому информация должна храниться в хранилище. 2) onblur не кажется полезным, поскольку он срабатывает при переключении на devtools или другое приложение.