退出全屏模式时捕获ESC事件

时间:2014-08-04 19:28:05

标签: javascript jquery html css

对我的要求当我按下按钮时,我必须以全屏模式显示特定的div 并在页面恢复正常模式时隐藏该div。

我可以使用以下代码实现全屏模式: -

function launchFullscreen(element) {
    if (element.requestFullscreen) {
        $('#bmessages').show();
        element.requestFullscreen();
    } else if (element.mozRequestFullScreen) {
        $('#bmessages').show();
        element.mozRequestFullScreen();
    } else if (element.webkitRequestFullscreen) {
        $('#bmessages').show();
        element.webkitRequestFullscreen();
    } else if (element.msRequestFullscreen) {
        $('#bmessages').show();
        element.msRequestFullscreen();
    } else {
        console.log("Fullscreen Unavailable");
    }
}

但我无法捕捉ESC或Deny事件,以便我可以再次隐藏该div?请告知我必须做什么?

3 个答案:

答案 0 :(得分:26)

使用esc离开全屏时,Chrome无法触发关键事件。但是,会触发fullscreenchange事件。

document.addEventListener('fullscreenchange', exitHandler);
document.addEventListener('webkitfullscreenchange', exitHandler);
document.addEventListener('mozfullscreenchange', exitHandler);
document.addEventListener('MSFullscreenChange', exitHandler);

function exitHandler() {
    if (!document.fullscreenElement && !document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {
        ///fire your event
    }
}  

答案 1 :(得分:1)

正如photicSphere所指出的,Chrome退出全屏模式时不会触发按键事件。你需要定义一个事件监听器来监听全屏模式的变化,就像这样(这个东西没有很好地标准化,所以你需要监听不同浏览器触发的事件):

        if (document.addEventListener) {
            document.addEventListener('webkitfullscreenchange', exitHandler, false);
            document.addEventListener('mozfullscreenchange', exitHandler, false);
            document.addEventListener('fullscreenchange', exitHandler, false);
            document.addEventListener('MSFullscreenChange', exitHandler, false);
        }

然后,当浏览器触发此事件时,它将调用' exitHandler'您定义的功能,并且您可以通过执行以下操作在用户退出全屏模式时执行操作:

    function exitHandler() {
        if (!document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {
            ... do something here
        }
    }

答案 2 :(得分:-1)

$(document).keyup(function(e) {

  if (e.keyCode == 27) { <DO YOUR WORK HERE> }   // esc
});

你可能会觉得这很有用:How to detect escape key press with JavaScript?