javascript - 仅使用 JavaScript 捕获 ESC 键

标签 javascript html html5-video

我有一个带有自己控件的自定义视频播放。我有一个脚本可以在用户进入并存在全屏时更改控件。问题是,当我使用 ESC 键而不是按钮退出全屏时,控件的样式更改不会恢复。我需要确保使用 ESC 或按钮退出全屏会导致相同的行为。

CSS:

function toggleFullScreen() {
  
  elem = document.getElementById("video_container");
  var db = document.getElementById("defaultBar"); 
  var ctrl = document.getElementById("controls");
  
  if (!document.fullscreenElement &&    // alternative standard method
      !document.mozFullScreenElement && !document.webkitFullscreenElement) {  // current working methods
    if (document.documentElement.requestFullscreen) {
          
          ctrl.style.width = '50%';
          ctrl.style.left = '25%';
          full.firstChild.src = ('images/icons/unfull.png');
          elem.requestFullscreen();          
        } else if (document.documentElement.mozRequestFullScreen) {
          full.firstChild.src = 'images/icons/unfull.png';
          ctrl.style.width = '50%';
          ctrl.style.left = '25%';
          elem.mozRequestFullScreen();
        } else if (document.documentElement.webkitRequestFullscreen) {
          
          ctrl.style.width = '50%';
          ctrl.style.left = '25%';
          full.firstChild.src = 'images/icons/unfull.png';
          elem.webkitRequestFullscreen();
          
        }
  } else if (document.exitFullscreen) {
        full.firstChild.src = 'images/icons/full.png';
        ctrl.style.width = '100%';
        ctrl.style.left = '0';        
        document.exitFullscreen();
        }
        else if (document.mozCancelFullScreen) {
        full.firstChild.src = 'images/icons/full.png';
        ctrl.style.width = '100%';
        ctrl.style.left = '0'; 
        document.mozCancelFullScreen();
        }
        else if (document.webkitCancelFullScreen) {
       
        ctrl.style.width = '100%';
        ctrl.style.left = '0';
        full.firstChild.src = 'images/icons/full.png';
        document.webkitCancelFullScreen();
        } 
}

最佳答案

event.key === "转义"

更新更简洁:使用 event.key。不再有任意数字代码!

document.addEventListener("keydown", function(event) {
    const key = event.key; // Or const {key} = event; in ES6+
    if (key === "Escape") {
        // Do things
    }
});

现代风格,带有 lambda 和解构

document.addEventListener("keydown", ({key}) => {
    if (key === "Escape") // Do things
})

Mozilla Docs

Supported Browsers

关于javascript - 仅使用 JavaScript 捕获 ESC 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925036/

相关文章:

javascript - breaker 在 underscore.js 中的重要性是什么?

html - 将一组 div 对齐到水平中心

javascript - 如何动态向存储在AMP状态的字符串添加新行?

php - xmlhttp.open(url) 和使用 AJAX 调用 php 函数不起作用?

javascript - 即使在我的服务器上的简单情况下,Express.js 路由器也无法工作

python - 使用 Python 3 从 PDF 解析中提取标题和子标题

html - 在停止、暂停或等待事件被触发后,我怎么知道什么时候可以继续

html5-video - Ooyala HTML5 播放器

html - 如何为黑暗模式加载不同的视频

javascript - Firebase 何时加载数据?