我需要知道用户当前是否正在查看Google Chrome中的选项卡。我尝试使用绑定到窗口的事件模糊和焦点,但只有模糊似乎工作正常。
window.addEventListener('focus', function() {
document.title = 'focused';
});
window.addEventListener('blur', function() {
document.title = 'not focused';
});
焦点事件的工作方式很奇怪,只是在某些时候。如果我切换到另一个选项卡并返回,焦点事件将不会激活。但是,如果我单击地址栏,然后返回页面,它将会。或者,如果我切换到另一个程序,然后返回Chrome,如果标签当前被聚焦,它将被激活。
发布于 2012-07-12 21:54:13
为问题Is there a way to detect if a browser window is not currently active?选择的答案应该可以工作。它利用了W3C在2011-06-02起草的Page Visibility API。
发布于 2010-04-27 20:13:34
毕竟,它可能会起作用,我很好奇,写了下面的代码:
...
setInterval ( updateSize, 500 );
function updateSize(){
if(window.outerHeight == window.innerHeight){
document.title = 'not focused';
} else {
document.title = 'focused';
}
document.getElementById("arthur").innerHTML = window.outerHeight + " - " + window.innerHeight;
}
...
<div id="arthur">
dent
</div>
这段代码精确地做了你想要做的事情,但是方式很丑陋。问题是,Chrome似乎经常忽略标题的变化(当切换到标签并按住鼠标1秒时,似乎总是会产生这种效果)。
你会在屏幕上看到不同的值,但你的标题不会改变。
结论:无论你在做什么,在测试时不要相信结果!
发布于 2015-09-30 02:45:25
对于任何想要在blur上交换页面标题,然后在focus上返回到原始页面标题的人:
// Swapping page titles on blur
var originalPageTitle = document.title;
window.addEventListener('blur', function(){
document.title = 'Don\'t forget to read this...';
});
window.addEventListener('focus', function(){
document.title = originalPageTitle;
});
https://stackoverflow.com/questions/2720658
复制相似问题