【问题标题】: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是什么?

标签: javascript google-chrome firefox browser visibility


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2011-10-26
  • 2011-06-03
  • 2021-02-09
  • 1970-01-01
  • 2013-05-17
  • 2021-05-21
相关资源
最近更新 更多