在Safari 5.1.2中传递Element.ALLOW_KEYBOARD_INPUT时,webkitRequestFullScreen失败

时间:2011-12-08 07:07:24

标签: javascript safari fullscreen

尝试使用javascript全屏api时,在Safari 5.1.2中特别遇到以下问题。

通过将以下行复制并粘贴到已加载页面上的浏览器中,您可以看到效果。

适用于Chrome 15和Safari 5.1.2:

 javascript:document.querySelector('body').webkitRequestFullScreen();

这适用于Chrome 15,但在Safari 5.1.2中无声地失败:

 javascript:document.querySelector('body').webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);

ALLOW_KEYBOARD_INPUT似乎应该可以在Safari中使用,根据此处的文档:http://developer.apple.com/library/safari/#documentation/WebKit/Reference/ElementClassRef/Element/Element.html

为什么这不起作用?

3 个答案:

答案 0 :(得分:9)

这是已知的Safari bug。在全屏切换期间可以嗅探它:

someElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
if (!document.webkitCurrentFullScreenElement) {
    // Element.ALLOW_KEYBOARD_INPUT does not work, document is not in full screen mode
}

使用此实时嗅探,因此您的代码将支持Safari中未来的修复错误。

答案 1 :(得分:3)

someElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)适用于Chrome。

someElement.webkitRequestFullScreen()适用于safari 5.1.7

所有测试基于Windows 7。

答案 2 :(得分:1)

我刚遇到同样的问题,这绝对是一个错误。

这可能是the Undetectables的情况。猜猜我们将不得不使用好的浏览器嗅探。

...(/Safari/.test(navigator.userAgent) ? undefined : Element.ALLOW_KEYBOARD_INPUT)

[edit] ...在这种情况下,键盘输入是不可能的。所以我想最好暂时在Safari中删除全屏模式[/ edit]

请记住,目前全屏API尚处于初期阶段,不应在生产中使用