防止按下ESC键退出全屏模式

4

使用以下代码可以将我的网页转换为全屏模式。

    var element = document.getElementById("b");


    if (element.mozRequestFullScreen) {

      element.mozRequestFullScreen();
    } else if (element.webkitRequestFullScreen) {

      element.webkitRequestFullScreen();
   }

我想要防止通过按下“ESC”键退出全屏模式。
我尝试了以下代码,但是没有起作用。
document.onkeydown = function (evt) {
            alert("1");
    if (evt.keyCode == 27) evt.preventDefault();
}

如果我按下Esc键,它将首先退出全屏模式,然后再按上述功能将会弹出"1"的提示。
我也尝试了以下代码,但没有效果。
  function keyUp(){
    alert("sdd");
document.querySelector("#start").addEventListener("keydown",function(e){
    var charCode = e.charCode || e.keyCode || e.which;
    if (charCode == 27){

        return false;
    }
});

}

并且

document.onkeydown = function (e) {
        if(e.which == 27){
                return false;
        }
}

有人知道如何防止退出全屏模式吗?或者如何通过F11键以编程方式将网页转换为全屏模式?


7
你为什么要这样做?这会很烦人,我不会再访问你的网站了。 - Lee Taylor
1
这个问题可以通过浏览器程序来解决吗?希望不是这样... - PeeHaa
1
我知道Chrome有一个--kiosk标志。 - PeeHaa
你为什么想要这样做呢?例如在Chrome打包应用程序中,它会像本地应用程序而不是浏览器一样运行。 - Cthutu
1
我正在运行全屏的远程桌面,并在远程窗口中运行Emacs。我经常使用ESC作为Emacs控制序列的一部分,每次按ESC键时,它会将我退出全屏模式。这个特性破坏了远程桌面的全屏功能。 - Brent Baccala
显示剩余4条评论
3个回答

11
任何符合标准的浏览器都不会(也不应该)允许您阻止此功能。这样做会非常侵入性并且会使用户感到困惑,因为他们希望始终有一个明确的“紧急按钮”来逃离屏幕。
以下是API规范: Mozilla开发者网络 W3C

2

从纯js中实现是不可能的。API旨在允许用户随时退出全屏模式。

唯一可以尝试的是使用fullscreenchange事件来检测全屏模式何时被禁用,然后再次启用它。 但是浏览器可能会警告用户,并且他将始终能够阻止您的网站使用全屏。

我不鼓励你这样做。那真的是一个糟糕的想法。如果有网站尝试这样做,我可能会愤怒地离开并永远不会回来。


1
在 Chrome 打包应用中,这不是一个坏主意,因此原始问题在这种情况下是有效的。 - Cthutu
这绝不是一个坏主意。如果我想让我的iPad像信息亭一样运行怎么办呢?是的,我知道这是不可能的,最好创建一个本地应用程序(即使这也不是真正的解决方案)。更好的方法是使用专门的触摸屏和RaspberryPi。 - Serhii Matrunchyk
9
暂时禁用"Esc"键的一个合理原因是允许用户在全屏应用程序上方显示的上下文菜单中,通过一次按键关闭菜单。在这种情况下,“Esc”的自然含义是返回上一级,你确实不希望整个页面崩溃。 - unsynchronized

0
你可以使用navigator.keyboard.lock();来防止按下Esc键退出全屏模式(或解锁指针)。
尽管它只在基于Chromium的浏览器中支持,并且仍然允许用户通过长按Esc键退出全屏。
查看Keyboard API MDN Web Docs

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