Javascript 在计算机从空闲状态恢复后检测Chrome是否在前台

Javascript 在计算机从空闲状态恢复后检测Chrome是否在前台,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在写一个chrome扩展,其中包括跟踪你在不同网站上花费的时间。我正在使用chrome.idle API跟踪计算机何时空闲/恢复,以便停止和启动计时器 我遇到的问题是,当计算机从空闲状态恢复时,即使Chrome不是用户计算机上的活动应用程序,我的计时器也会重新启动。这是我的密码: chrome.idle.onStateChanged.addListener(function(newState){ if (newState == "active") { //user resumes

我正在写一个chrome扩展,其中包括跟踪你在不同网站上花费的时间。我正在使用chrome.idle API跟踪计算机何时空闲/恢复,以便停止和启动计时器

我遇到的问题是,当计算机从空闲状态恢复时,即使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确实是活动/前台应用程序?

根据wOxxOm的上述评论,解决方案是迭代所有窗口对象并检查聚焦属性:

 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]);
                });

            }


        });

    });

尝试chrome.windows.getAll并检查每个窗口的
聚焦属性。这很有效,谢谢!