Javascript - обнаружение, если окно неактивно, но все еще видно - PullRequest
6 голосов
/ 11 июня 2019

Число других ответов раскрыло, как работающий сценарий Javascript может определить, активно ли его текущее окно или нет. Однако это довольно ограниченный набор вариантов, и он не делает различий между (например)

  1. свернутое окно
  2. неактивная вкладка
  3. плавающее окно, частично затмеваемое плавающими окнами других программ
  4. вкладка, которая отображается на одном мониторе в полноэкранном режиме, когда пользователь выполняет действия в другом окне на другом мониторе.

Все они считаются неактивными , несмотря на то, что в последних двух случаях веб-страница остается видимой для пользователя.

Хотя есть доказательства того, что это может быть технически невозможно, учитывая то, как работают песочницы веб-браузера , я все же хотел бы обнаружить различия между вышеперечисленными. Например, приостановить анимацию для (1) или (2), но сохранить ее для (3) или (4). Мне интересно, если Javascript (плюс фреймворки или WebAssembly) предоставляет механизм для определения этого - или, в случае неудачи, есть ли у каких-либо конкретных браузеров механизмы для его определения из кода javascript одной страницы.

1 Ответ

8 голосов
/ 17 июня 2019

Вы не можете.Некоторое время назад я рассматривал этот проект, и активный и неактивный - единственное отличие, которое может сделать браузер.

Информация о позициях других окон в системе не передается браузеру, особенно с учетом того, чтоэтот маршрут мог бы быть подвергнут обратному проектированию, чтобы подвергнуть риску безопасности.Гораздо безопаснее держать каждое окно в неведении относительно того, что делают другие программы в системе.

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

API видимости страницы имеет 95% охват и, вероятно, наиболее близко к нему можно прийти - но вы уже знаетеэто потому, что это лучший ответ на каждый вопрос, который вы связали.Тебе здесь не повезло.

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