Dim*_*ser 12 javascript fullscreen
我一直在网上搜索我的全屏javascript在Safari中不起作用的原因,但在webkit浏览器Chrome中有效.似乎safari不支持element.ALLOW_KEYBOARD_INPUT附加组件webkitRequestFullScreen.
function cancelFullScreen(el) {
var requestMethod = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullscreen;
if (requestMethod) { // cancel full screen.
requestMethod.call(el);
} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null) {
wscript.SendKeys("{F11}");
}
}
}
function requestFullScreen(el) {
// Supports most browsers and their versions.
var requestMethod = el.requestFullScreen || el.webkitRequestFullScreen(el.ALLOW_KEYBOARD_INPUT) || el.mozRequestFullScreen || el.msRequestFullScreen;
if (requestMethod) { // Native full screen.
requestMethod.call(el);
} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null) {
wscript.SendKeys("{F11}");
}
}
return false
}
function toggleFull() {
var elem = document.body; // Make the body go full screen.
var isInFullScreen = (document.fullScreenElement && document.fullScreenElement !== null) || (document.mozFullScreen || document.webkitIsFullScreen);
if (isInFullScreen) {
cancelFullScreen(document);
} else {
requestFullScreen(elem);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何让safari接受全屏但仍然能够处理键盘输入?
bri*_*rls 19
根据Apple的文档,这应该适用于Safari 5.1及更高版本,但显然它没有.我向Apple提交了一份错误报告(他们没有公开),回复如下:
Engineering已根据以下内容确定此问题的行为符合预期:出于安全原因,我们故意禁用全屏键盘访问.
我已回复要求他们至少更新文档并以某种方式检测缺少功能支持.如果我得到回复,我会在这里更新.
不幸的是,甚至没有一种好的方法来进行特征检测,因为element.ALLOW_KEYBOARD_INPUT在Safari中定义,并且带有该标志的函数调用不会引发错误.唯一剩下的选项是解析用户代理字符串(尝试此库).
显然,苹果并没有文件的版本支持这一点,但根据这个,它停止工作为V5.1.2的.这将使极少数人使用5.1未修补,如果它甚至一直工作.所以它可能甚至不值得检测版本.
作为后备,我将扩展所需的DOM元素以填充浏览器窗口,方法是将CSS高度和宽度设置为100%并将其定位为"fixed"或"absolute".
更新:看起来文档已更正,不再提及该ALLOW_KEYBOARD_INPUT标志.