Javascript 在计算机从空闲状态恢复后检测Chrome是否在前台
我正在写一个chrome扩展,其中包括跟踪你在不同网站上花费的时间。我正在使用chrome.idle API跟踪计算机何时空闲/恢复,以便停止和启动计时器 我遇到的问题是,当计算机从空闲状态恢复时,即使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.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并检查每个窗口的
聚焦属性。这很有效,谢谢!