msFullscreenEnabled的规格是什么?

4

MDN关于fullscreenEnabled有以下的描述:

fullscreenEnabled属性告诉您文档当前是否处于允许请求全屏模式的状态。

我理解这意味着:只要可以请求全屏,该属性就会保持。

微软在此处几乎有相同的措辞:

如果文档允许元素在全屏模式下显示,则返回true。否则返回false

然而,在MSDN 属性的详细页面中,有以下矛盾的信息:

指示元素当前是否处于全屏模式的标志。

由于这个属性只有在元素当前处于全屏模式时才返回true,因此它不应用于特性检测。
这是怎么回事?
更新
我的测试表明,在IE 11上msFullscreenEnabled属性确实会产生错误的负面结果。
1个回答

4

您需要了解每个浏览器都有自己特定的fullscreenEnabled实现。

由于W3C全屏规范尚未最终确定,大多数浏览器厂商都会为API添加前缀。最好有一个单独的函数可以跨所有前缀请求全屏模式。

然而,在某个时候,W3全屏API文档(2014年11月18日)被取消,转而支持WHATWG关于全屏API规范的工作 - 仍在进行中。


Internet Explorer在11版本之前没有实现它(命名为msFullscreenEnabled)。Microsoft Edge及以上选择使用名称fullscreenEnabled对于msFullscreenEnabled的错误负面影响,它处于实验阶段,这不应出乎意料。

Mozilla Firefox的fullscreenEnabled也是实验性的。在Firefox 10之后,默认启用。实际上,它的语法是mozFullScreenEnabledwebkit同理。

mozFullScreenEnabled定义是:

报告全屏模式是否可用。只有在页面中没有任何窗口化插件,并且包含文档的所有元素都设置了allowfullscreen属性的情况下,才能使用全屏模式。

这符合当前全屏API规范提到的要求:

fullscreenEnabled如果文档具有显示元素的全屏能力并支持全屏,则返回true,否则返回false。


我的猜测是微软遵循了已经停用的W3C全屏API文档,该文档在某个时候发生了变化,并最终得到了与当前工作API不同的规范。 我只在Microsoft Fullscreen API documentation中找到了W3C停用文件的参考,这似乎支持了这一点。
我相信Microsoft Fullscreen API documentation中提到的内容将会在fullscreenenabled property description中得到更新。但是我还没有使用Edge浏览器,所以我不能确定是规范有误还是实现有误。
你也可以查看HTML 5全屏API的背景/必要性这里和API的浏览器支持这里

Edge已经取消了该属性的前缀,但MSDN上的详细页面和概述页面仍然互相矛盾。我没有尝试看Edge实际上做了什么。 - Raphael Schweikert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接