Обнаружение, если Chrome находится на переднем плане после того, как компьютер возобновляет из состояния ожидания - PullRequest
0 голосов
/ 25 августа 2018

Я пишу расширение Chrome, которое (помимо прочего) отслеживает, сколько времени вы проводите на разных сайтах. Я использую API chrome.idle, чтобы отслеживать, когда компьютер переходит в режим ожидания / возобновляет работу, чтобы остановить и запустить таймеры.

Проблема, с которой я сталкиваюсь, заключается в том, что когда компьютер возобновляет работу из режима ожидания, таймер запускается снова, даже если Chrome не является активным приложением на компьютере пользователя. Вот мой код:

chrome.idle.onStateChanged.addListener(function(newState){

  if (newState == "active") {
   //user resumes activity after being locked/idle:
    chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
        processTab(tabs[0]);
    });

  } 
});

Я пробовал оба: chrome.tabs.query({ currentWindow: true, active: true}) и chrome.tabs.query({ lastFocusedWindow: true, active: true, и оба возвращают вкладку окна / активной, даже если сам Chrome не является активным приложением на компьютере.

Как мне убедиться, что Chrome действительно является активным / приоритетным приложением в этом случае?

1 Ответ

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

Исходя из комментария wOxxOm выше, решение состояло в том, чтобы выполнить итерацию по всем объектам окна и проверить свойство focus:

 chrome.windows.getAll(null, function (windows){
        windows.forEach(function(window){

            if(window.focused){
                chrome.tabs.query({ windowId: window.id, active: true }, function (tabs) {
                     processTab(tabs[0]);
                });

            }


        });

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