Расширение Chrome: остановка всех вкладок и окон, кроме активной и при воспроизведении аудио - PullRequest
0 голосов
/ 24 августа 2018

Как остановить все вкладки и окна, кроме активных и воспроизводящих звук?Я нашел это, чтобы помочь:

Если вы хотите, чтобы что-то со скриптом контента происходило всегда, вы определяете это в> манифесте:

Если код вашего скрипта контента должен всегда вводитьсязарегистрируйте его в> манифесте расширения, используя поле content_scripts

"content_scripts" : [{
  "matches": ["<all_urls>"],
  "js": ["stop.js"],
  "run_at": "document_start"
}],

При этом вы знаете, что файл stop.js загружается рядом с каждой страницей в начале загрузки страницы.Тогда вы можете реализовать свою логику.Самое простое решение:

// stop.js
setTimeout(() => {window.stop()}, 10000);

Проблема в том, что нет никаких упоминаний об активных окнах, активных вкладках, вкладках или активном аудио.Я давно хотел это сделать.В основном, веб-сайты в настоящее время живы (переполнение javascript) и позволяют мрачный юмор, я хочу, чтобы они были мертвыми, как только они закончат загрузку, за исключением аудио / видео сайтов (прекращение javascript).Также было упомянуто о:

Вы также можете рассмотреть возможность добавления «all_frames»: true к объявлению скрипта содержимого>, если вы хотите, чтобы это также происходило в подкадрах.

Так бы это выглядело так:

"content_scripts" : [{
  "matches": ["<all_urls>"],
  "js": ["stop.js"],
  "run_at": "document_start"
  "all_frames": true
}],

1 Ответ

0 голосов
/ 26 августа 2018

Вы можете использовать API видимости страницы и особенно свойство document.hidden в своем скрипте, чтобы узнать, видима ли текущая вкладка, чтобы предотвратить ее "остановку":

Document.hidden (только для чтения)
Возвращает true, если страница находится в состоянии, которое считается скрытым для пользователя, и false в противном случае.

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

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

Издает ли вкладка звук за последние пару секунд (но он может не быть слышен, если он также отключен).Эквивалентно тому, показывает ли звуковой индикатор динамика.

Вы также можете взглянуть на код расширения Great Suspender Chrome , вы можете найти полезный код.

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