首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用Javascript的Chrome中检测标签是否被聚焦?

如何在使用Javascript的Chrome中检测标签是否被聚焦?
EN

Stack Overflow用户
提问于 2010-04-27 19:20:15
回答 6查看 64K关注 0票数 77

我需要知道用户当前是否正在查看Google Chrome中的选项卡。我尝试使用绑定到窗口的事件模糊和焦点,但只有模糊似乎工作正常。

代码语言:javascript
复制
window.addEventListener('focus', function() {
  document.title = 'focused';
});

window.addEventListener('blur', function() {
  document.title = 'not focused';
});

焦点事件的工作方式很奇怪,只是在某些时候。如果我切换到另一个选项卡并返回,焦点事件将不会激活。但是,如果我单击地址栏,然后返回页面,它将会。或者,如果我切换到另一个程序,然后返回Chrome,如果标签当前被聚焦,它将被激活。

EN

回答 6

Stack Overflow用户

发布于 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

票数 8
EN

Stack Overflow用户

发布于 2010-04-27 20:13:34

毕竟,它可能会起作用,我很好奇,写了下面的代码:

代码语言:javascript
复制
...
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秒时,似乎总是会产生这种效果)。

你会在屏幕上看到不同的值,但你的标题不会改变。

结论:无论你在做什么,在测试时不要相信结果!

票数 2
EN

Stack Overflow用户

发布于 2015-09-30 02:45:25

对于任何想要在blur上交换页面标题,然后在focus上返回到原始页面标题的人:

代码语言:javascript
复制
// 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;
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2720658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档