Можете ли вы обнаружить перемещение между открытыми вкладками в разных Windows? - PullRequest
0 голосов
/ 20 ноября 2018

Используя background.js в расширении Chrome, вы можете обнаружить перемещение фокуса с одной вкладки на другую?

Я говорю об очень специфической ситуации - не просто использовать onacactive для обнаружения нажатия пользователем.другая вкладка.

Если у меня открыты два окна Chrome (одна и та же учетная запись пользователя), каждое с отдельной веб-страницей, и пользователь просто нажимает, чтобы вывести одно на передний план (чтобы вы могли прокручивать и читать страницу), деактивированное событие НЕ срабатывает.Кажется, он срабатывает только при перемещении между вкладками в одном окне.

Я могу захватить mousedown и т. Д., Но если вы просто нажмете один раз, чтобы вывести окно на передний план, эти события тоже не сработают (второй щелчок запускает mousedown).

Кажется странным упущением... Я бы подумал, что onacactive охватит этот сценарий - пользователь активировал его.

На самом деле onacactive не срабатывает, когда вы нажимаете этот второй раз.Я предполагаю, что это специфично для переключения вкладок в одном окне.

1 Ответ

0 голосов
/ 21 ноября 2018

chrome.tabs.onActivated срабатывает, когда активная вкладка в окне изменяется [ docs ], то есть для каждого окна, поэтому не будет срабатывать, если пользователь не переключится на другую вкладку в окне этой вкладки.

Решение: используйте chrome.windows.onFocusChanged, который срабатывает при активации окна Chrome [ документы ].

Сообщает chrome.windows.WINDOW_ID_NONE, если все окна Chrome потеряли фокус,Примечание. В некоторых оконных менеджерах Linux WINDOW_ID_NONE всегда отправляется непосредственно перед переключением из одного окна Chrome в другое.

chrome.windows.onFocusChanged.addListener(windowId => {
  // do something
});

Вы можете указать тип окон для отчета:

chrome.windows.onFocusChanged.addListener(windowId => {
  // do something
}, {windowTypes: ['normal']});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...