Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

webkitRequestFullScreen fails when passing Element.ALLOW_KEYBOARD_INPUT in Safari 5.1.2

Running into the following problem specifically in Safari 5.1.2 when attempting to use the javascript fullscreen api.

By copy and pasting the following lines into your browser on a loaded page, you can see the effect.

This works in Chrome 15 and Safari 5.1.2:

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

This works in Chrome 15 but fails silently in Safari 5.1.2:

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

ALLOW_KEYBOARD_INPUT seems like it should work in Safari, according to documentation here: http://developer.apple.com/library/safari/#documentation/WebKit/Reference/ElementClassRef/Element/Element.html

Any ideas why this isn't working?

like image 419
Geuis Avatar asked Dec 08 '11 07:12

Geuis


3 Answers

This is known Safari bug. It can be sniffed during full screen switching:

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

Use this real time sniffing and thus your code will support future fixing bug in Safari.

like image 113
Tony Avatar answered Nov 11 '22 08:11

Tony


someElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT) works in chrome.

And someElement.webkitRequestFullScreen() works in safari 5.1.7

All test base on windows 7.

like image 3
taochengzhou Avatar answered Nov 11 '22 07:11

taochengzhou


I just ran into the same issue, and this is most definitely a bug.

This may be a case of the Undetectables. Guess we're gonna have to use good ol' browser sniffing.

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

[edit] ...in which case keyboard input isn't possible. So I guess it's best to cut out fullscreen mode in Safari for the time being [/edit]

Keep in mind that the fullscreen API is in a very early stage at the moment, and should not be used in production

like image 1
user123444555621 Avatar answered Nov 11 '22 06:11

user123444555621