由于对此没有回应,这是我最终使用的 hack,它应该非常广泛地适用于任何人。据推测,一旦 Safari 添加了W3 标准中指定的 document.fullscreenElement,在不久的将来就不需要这样做了。
就我而言,情况是我有一个全屏按钮,我希望全屏按钮在网站全屏时变成“缩小”按钮(如 YouTube 视频)。作为其中的一部分,我已经实现了 :fullscreen css 选择器,以便在站点全屏时将我的按钮变成“缩小”按钮。
我意识到 Safari 尊重 :-webkit-full-screen css 伪类。因此,检查我的按钮图像是否为“缩小”图像是一项快速的工作(AFAIK,您无法直接测试伪类),如果是,我们必须是全屏的。
所以:
CSS:
.fullscreen-button
background-image: fullscreen.png
/* these match if .fullscreen-button is inside a fullscreen body element
(comma-separated selectors don't seem to work here?) */
body:fullscreen .fullscreen-button
background-image: fullscreen-exit.png
body:-webkit-full-screen .fullscreen-button
background-image: fullscreen-exit.png
body:-moz-full-screen .fullscreen-button
background-image: fullscreen-exit.png
JS:
isFullscreen = function() {
// this doesn't yet exist in Safari
if (document.fullscreenElement
|| document.webkitFullscreenElement
|| document.mozFullScreenElement) {
return true;
}
// annoying hack to check Safari
return ~$(".fullscreen-button").css("background-image").indexOf("exit")
}
任何人都应该可以使用此 hack。即使您没有在全屏模式下更改按钮的背景图像之类的操作,您也应该始终能够对一个元素进行一些微不足道的小 css 规则更改 - 特别是如果它实际上是不可见的,比如不可见元素的背景颜色,或者没有任何文本的元素的字体大小——并在 JavaScript 中进行测试。