gpt4 book ai didi

javascript - 替代 ALLOW_KEYBOARD_INPUT javascript 全屏

转载 作者:可可西里 更新时间:2023-11-01 02:02:05 25 4
gpt4 key购买 nike

我一直在互联网上搜索为什么我的全屏 javascript 在 Safari 中不起作用,但在 webkit 浏览器 Chrome 中起作用。 Safari 似乎不支持 webkitRequestFullScreenelement.ALLOW_KEYBOARD_INPUT 插件。

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;
}

有没有人知道让 safari 接受全屏但仍然能够处理键盘输入的方法?

最佳答案

根据 Apple 的 documentation ,这应该适用于 Safari 5.1 及更高版本,但显然它不起作用。我向 Apple 提交了错误报告(他们没有公开),回复如下:

Engineering has determined that this issue behaves as intended based on the following: We intentionally disable keyboard access in full screen for security reasons.

我已回复要求他们至少更新文档并以某种方式检测到功能支持的缺失。如果我得到回复,我会在这里更新。

不幸的是,甚至没有一个好的方法来进行特征检测,因为 element.ALLOW_KEYBOARD_INPUT 是在 Safari 中定义的,并且带有该标志的函数调用不会引发错误。剩下的唯一选择是解析用户代理字符串(尝试 this library )。

显然,Apple 尚未记录哪个版本支持此功能,但根据 this , 它从 v5.1.2 开始停止工作。如果 5.1 能够正常工作的话,那将导致极少数使用 5.1 的人未打补丁。所以可能甚至不值得检测版本。

作为后备方案,我会通过将 CSS 高度和宽度设置为 100% 并将位置设置为“固定”或“绝对”来扩展所需的 DOM 元素以填充浏览器窗口。

更新:文档似乎已更正,不再提及 ALLOW_KEYBOARD_INPUT 标志。

关于javascript - 替代 ALLOW_KEYBOARD_INPUT javascript 全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com