此问题在此处已有答案:
9年前关闭了。
可能重复:
Is there a way to detect if a browser window is not currently active?
我有一个函数,它每秒钟都会被调用一次,我只想在当前页面在前台的情况下运行它,也就是说,用户没有最小化浏览器或切换到另一个选项卡。如果用户不看它,它就没有任何意义,而且可能会占用大量CPU,所以我不想在后台浪费周期。
有谁知道如何在JavaScript中告诉我们这一点?
注意:我使用jQuery,所以如果您的答案使用jQuery,那也没关系:)。
6条答案
按热度按时间laximzn51#
除了 Richard Simões 回答 你 还 可以 使用 Page Visibility API 。
中 的 每 一 个
此 规范 为 站点 开发 人员 定义 了 一 种 方法 , 用于 以 编程 方式 确定 页面 的 当前 可见 性 状态 , 以便 开发 功率 和 CPU 效率 高 的 Web 应用 程序 。
# # 了解 更多 信息 ( 2019 年 更新 )
document.hidden
https://web.archive.org/web/20170609212707/http://www.samdutton.com/pageVisibility/ 格式
sbdsn5lh2#
您 可以 使用 windows 的
focus
和blur
事件 :中 的 每 一 个
要 回答 " Double Fire " 的 评论 问题 并 保持 jQuery 的 易用 性 :
格式
单击 以 查看 Example Code Showing it working (JSFiddle)
htrmnn0y3#
我会尝试在
window.onfocus
和window.onblur
事件上设置标志。以下代码片段已在Firefox、Safari和Chrome上进行了测试,打开控制台并在选项卡之间来回移动:
试试看here。
lstz6jyr4#
使用jQuery:
jei2mxaa5#
这里所有的例子(除了rockacola的例子)都要求用户点击窗口来定义焦点,这并不理想,所以
.hover()
是更好的选择:这将告诉您用户何时将鼠标放在屏幕上,但它仍然不会告诉您鼠标是否在前台,而用户的鼠标在其他地方。
dxxyhpgq6#
如果您尝试在Chrome中打开类似于Google搜索页面的操作(当您“聚焦"页面时会触发某些事件),那么hover()事件可能会有所帮助。