有没有办法了解Google Chrome是关注焦点还是失焦?我正在创建一个应用程序,需要知道用户当前是否正在使用浏览器。
通过在Google扩展程序中通过内容脚本绑定检测,我尝试使用模糊和焦点,但问题是单击地址栏也会触发模糊事件。检测鼠标移动也同样如此,将无法检测到将鼠标移动到查看区域之外。
我也尝试过查看onFocusChanged,但它似乎只能检测出chromes'窗口中的变化而不是Chrome以外的应用程序。
有人对此有其他想法吗?另外,如果我为firefox创建了一个附加组件,这会更容易吗?
谢谢!
答案 0 :(得分:11)
您可以使用chrome.windows
API来监控此问题。您将为onFocusChanged
事件添加一个侦听器,如果事件返回-1
或chrome.windows.WINDOW_ID_NONE
,那么您就知道浏览器失去了焦点:
var inFocus = true; // global boolean to keep track of state
chrome.windows.onFocusChanged.addListener(function(window) {
if (window == chrome.windows.WINDOW_ID_NONE) {
inFocus = false;
} else {
inFocus = true;
}
});
答案 1 :(得分:5)
也许有些人不会看到@Giedrius'评论。此间隔有效:
window.setInterval(checkBrowserFocus, 1000);
function checkBrowserFocus(){
chrome.windows.getCurrent(function(browser){
console.log(browser.focused)
})
}
答案 2 :(得分:1)
是的,这是通过操纵模糊和焦点事件来完成的。 就像jQuery中的这个例子一样:
$(window).blur(function(){
// do something when it loose focus like that:
alert('Good Bye.');
});
$(window).focus(function(){
// do something when it gains focus
alert('Welcome back.');
});
答案 3 :(得分:1)
setInterval(function() {
chrome.windows.getLastFocused(function(window) {
console.log(window.id.toString() + " " + window.focused.toString())
});
}, 1000);
或:
setInterval(function() {
chrome.windows.getCurrent(function(window) {
console.log(window.id.toString() + " " + window.focused.toString())
});
}, 1000);
window.focused为false表示没有聚焦chrome窗口。