javascript - 防止 Esc 键退出网站上的全屏应用程序模式

标签 javascript html macos safari fullscreen

我正在开发自定义“灯箱”照片库。我正在添加关键事件“监听器”(左>上一个,右>下一个,esc>关闭),并且我遇到了 Safari(或任何全屏模式浏览器)在退出时退出全屏模式的问题。我的网站工作正常,只是查看者必须恢复 Safari(和其他)的全屏模式。

现在,我知道有一种方法可以绕过它。例如,Facebook 在以“剧院”模式查看照片时,可以使用 esc 键关闭,而不会导致我的浏览器退出全屏。

有什么想法吗?

最佳答案

实际上,您不能禁用浏览器的 ESC 键,因为这是让用户至少对浏览器有一定控制权的妥协。 但是,您确实有办法将事件监听器绑定(bind)到您的元素字段(比如您的灯箱 div)以在按下 Esc 时捕获事件并抑制它,如下所示:(所以当人们按下 ESC 在画廊 div 上它不会退出浏览器全屏)

document.querySelector("div.lightbox").addEventListener("keydown",function(e){
    var charCode = e.charCode || e.keyCode || e.which;
    if (charCode == 27){
         alert("Escape is not suppressed for lightbox!");
        return false;
    }
});

许多浏览器现在使用 F11 键切换全屏模式。

关于javascript - 防止 Esc 键退出网站上的全屏应用程序模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916109/

相关文章:

html - 有什么方法可以将 block 样式/CSS 转换为内联 CSS?

macos - 在运行时从扩展坞添加/删除应用程序图标?

macos - 网络调用无法在使用 Unity3D 构建的发布版本 OSX 应用程序上运行

javascript - 如何停止setInterval?清除间隔不起作用

javascript - JavaScript中如何调用类函数?

javascript - 单击弹出窗口显示错误数据

iphone - Mac 中 iPod/iPhone 的安装点在哪里?

javascript - 简单的 php 到 Codeigniter

javascript - 扩展 Array 类时如何覆盖构造函数?

javascript - 如何拖放到文本中