浏览器可以检测浏览器何时在前台或后台模式下运行? [复制]

Posted

技术标签:

【中文标题】浏览器可以检测浏览器何时在前台或后台模式下运行? [复制]【英文标题】:Can browser detect when the browser is running on Foreground or Background mode? [duplicate] 【发布时间】:2021-09-20 01:44:58 【问题描述】:

我想知道当我在我的电脑上使用多种类型的软件时,浏览器可以检测到其他软件正在运行或正在运行吗?

当我使用其他软件时,浏览器也可以处理浏览器在后台运行的情况。

或者当我使用alt+tab切换软件时,浏览器是否可以检测到。

【问题讨论】:

浏览器当然可以检测到这一点。你为什么在乎?您是在询问浏览器中显示的网站内部的 javascript 是否可以检测到这一点? 浏览器可以检测到这一点。浏览器扩展也可以通过基本权限检测到这一点。此外,页面可以侦听某些 DOM 事件以检测它们何时不再处于焦点状态。这不是一份详尽的清单,但可能会给您一些提示。 从浏览器切换到其他软件时,浏览器可以检测到吗? @Bergi 我可以处理原始 JS 代码的扩展吗? @zr0gravity7 @MijanurRahman 同样,“来自浏览器”是什么意思?浏览器只是一个与其他应用程序一样的应用程序,是的,操作系统(窗口管理器)提供了一种检测方式。但是您没有实现浏览器,是吗?你想做什么,你的actual problem是什么? 【参考方案1】:

您可以使用Page Visibility API:

var visibilityChange;
if (typeof document.hidden !== "undefined")  // Opera 12.10 and Firefox 18 and later support
  visibilityChange = "visibilitychange";
 else if (typeof document.msHidden !== "undefined") 
  visibilityChange = "msvisibilitychange";
 else if (typeof document.webkitHidden !== "undefined") 
  visibilityChange = "webkitvisibilitychange";

//^different browsers^

document.addEventListener(visibilityChange, function()
  console.log("Visibility changed at "+new Date());
, false);

【讨论】:

当从浏览器切换到另一个软件时,这个答案可以检测到吗? 我在使用 ReactJs 时在 componentDidMount 中使用了这个函数。但它只能检测我何时使用浏览器将一个选项卡切换到另一个选项卡。 @MijanurRahman 这很奇怪......我会调查的。 好的,非常感谢。还有其他关于如何在 ReactJs 中使用可见性 API 的过程吗? 你得到任何答案了吗? @Spectric

以上是关于浏览器可以检测浏览器何时在前台或后台模式下运行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 JavaScript 中检测 Android 和 iOS 浏览器何时关闭屏幕

有没有办法以编程方式检测用户何时按下浏览器中的F5按钮?

快速检测应用程序是在后台还是前台

iOS后台模式下本地主机没有响应

在后台/前台模式下运行冗长的核心数据删除

从后台任务或服务中确定当前前台应用程序