【问题标题】:Prevent Esc Key from Exiting FullScreen App Mode on Website防止 Esc 键退出网站上的全屏应用程序模式
【发布时间】:2014-01-21 20:36:04
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

  • event.preventDefault() 不起作用吗?

标签: javascript html macos safari fullscreen


【解决方案1】:

实际上,您不能为浏览器禁用 ESC 键,因为这是一种妥协,用户至少可以对其浏览器进行一些控制。 但是,您确实有办法将事件侦听器绑定到您的元素字段(例如您的灯箱 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 键切换全屏模式。

【讨论】:

  • 智者注意:在意识到我绑定到 keyup 事件之前,我已经为此苦恼了很久。确保将您的默认阻止处理程序绑定到 keydown 事件!
  • 感谢您的帮助。这使我走上了在我的应用程序中解决相同问题的道路上;多谢!我发现返回 false 已被弃用。现在停止事件进一步传播的正确方法是调用 Event.preventDefault()。见:developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault
猜你喜欢
  • 2023-04-03
  • 2014-10-21
  • 1970-01-01
  • 2011-05-10
  • 2014-09-27
  • 2023-03-19
  • 2022-01-26
  • 2019-07-23
  • 1970-01-01
相关资源
最近更新 更多