检测浏览器是否处于全屏模式

IT技术 javascript dom browser fullscreen
2021-01-24 02:34:19

有没有办法可靠地检测浏览器是否以全屏模式运行?我很确定没有任何我可以查询的浏览器 API,但是有没有人通过检查和比较 DOM 公开的某些高度/宽度测量来解决这个问题?即使它只适用于某些浏览器,我也有兴趣了解它。

6个回答

Chrome 15、Firefox 10 和 Safari 5.1 现在提供 API 以编程方式触发全屏模式。以这种方式触发的全屏模式提供了检测全屏更改的事件和用于设置全屏元素样式的 CSS 伪类。

有关详细信息,请参阅此 hacks.mozilla.org 博客文章

不过,有没有办法使用浏览器提供的方式(如 F11 或 Chrome 中的 Zoom 旁边的菜单)检测用户进入全屏模式?
2021-03-17 02:34:19

如何确定视口宽度和分辨率宽度以及高度之间的距离。如果它是少量像素(尤其是高度),则它可能处于全屏状态。

但是,这永远不会可靠。

刚刚用 Chrome 测试过。window.innerWidth, document.body.clientWidth,document.widthdocument.documentElement.clientWidth都报告相同的值...
2021-03-27 02:34:19
滚动条是否算作视口的一部分?
2021-03-29 02:34:19
如果浏览器实际上是全屏运行,则视口大小和分辨率之间的差异应等于 0。除非您正在运行多个显示器,否则我猜。
2021-04-04 02:34:19
这是我一直在思考的路线。我可以编写一个测试页面,显示所有感兴趣的维度,并比较正常显示和全屏显示时为页面报告的维度。从那里我也许能够确定某些浏览器的状态。
2021-04-09 02:34:19
我不确定-您必须进行实验。
2021-04-12 02:34:19

Opera 将全屏视为不同的 CSS 媒体类型。他们称之为Opera Show,您可以轻松控制它:

@media projection {
  /* these rules only apply in full screen mode */
}

结合Opera@USB,我个人觉得它非常方便。

请在您的答案中添加一些进一步的解释 - 这与 Javascript 有什么关系?
2021-03-21 02:34:19

Firefox 3+ 为window报告浏览器是否处于全屏模式对象提供了一个非标准属性window.fullScreen

好的!这确实在 Firefox 中可靠地工作。这绝对是解决方案的一部分。
2021-03-20 02:34:19

只是想我会加上我的 thruppence 来拯救任何人敲他们的头。如果您可以完全控制流程,即您可以在代码中启动全屏流程,则第一个答案非常好。如果有人通过按 F11 来做到这一点,那将毫无用处。

希望的地平线上的一线希望来到这个W3C推荐的形式http://www.w3.org/TR/view-mode/这将使窗检测,浮动(无铬),最大化,最小化,并通过全屏媒体查询(当然意味着 window.matchMedia 和关联)。

我已经看到有迹象表明它正在使用 -webkit 和 -moz 前缀的实施过程中,但它似乎还没有投入生产。

所以不,没有解决方案,但希望我能拯救一些在撞墙之前跑来跑去的人。

PS *:-moz-full-screen 也做 doo-dah,但很高兴知道。

不幸的是,链接的建议自 2018 年 10 月起已过时,不会实施。
2021-04-01 02:34:19