javascript - 退出全屏不适用于 chrome? [我错过了什么?]

标签 javascript html5-fullscreen

我的屏幕上有两个按钮。每个人都会触发一段 javascript 代码来进入和退出全屏模式。

按钮 1:进入全屏模式

按钮 2: 退出全屏模式

如果我先点击按钮 1,它会进入全屏模式,然后如果我点击按钮 2,它会退出全屏模式。

但是,如果我使用 F11 或通过 chrome 菜单 进入全屏模式,意外地 Button 2 不再起作用。

为什么会发生这种情况以及如何解决?

按钮 1 代码:

goFullscreen();
function goFullscreen() {
    var el = document.documentElement,
      rfs = el.requestFullscreen
        || el.webkitRequestFullScreen
        || el.mozRequestFullScreen
        || el.msRequestFullscreen 
    ;

    rfs.call(el);
}

按钮 2 代码:

document.webkitCancelFullScreen();

我也尝试过,但没有成功:

document.webkitExitFullscreen();

最佳答案

你应该在执行前验证....

    function FullScreen(divID) {
        fnFullScreen(divID, !IsFullScreen());
    }
    function IsFullScreen() {
        return (document.fullscreenElement && document.fullscreenElement !== null) ||
                 (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) ||
                 (document.mozFullScreenElement && document.mozFullScreenElement !== null) ||
                 (document.msFullscreenElement && document.msFullscreenElement !== null);
    }
    function fnFullScreen(divID, TurnOn) { 
        if (TurnOn) {
            var docElm = $('#' + divID).parent()[0];
            if (docElm.requestFullscreen) {
                docElm.requestFullscreen();
            } else if (docElm.mozRequestFullScreen) {
                docElm.mozRequestFullScreen();
            } else if (docElm.webkitRequestFullScreen) {
                docElm.webkitRequestFullScreen();
            } else if (docElm.msRequestFullscreen) {
                docElm.msRequestFullscreen();
            }
            $('#' + divID).css("min-height", "100vh");
            $('.btnFullScreen').html('Exit Full Screen');
        } else { 
            if (document.exitFullscreen) {
                document.exitFullscreen().catch(() => { });
            } else if (document.webkitExitFullscreen) {
                document.webkitExitFullscreen();
            } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
            } else if (document.msExitFullscreen) {
                document.msExitFullscreen();
            }
             
            $('#' + divID).css("min-height", "");
            $('.btnFullScreen').html('Full Screen');
        }
    }
 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   <div class="body">
   <div id="div1"> <button class="btnFullScreen"  onclick="FullScreen('div1')">Full Screen</button> click to full screen</div>
   </div>

 

 

关于javascript - 退出全屏不适用于 chrome? [我错过了什么?],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527865/

相关文章:

javascript - 如何通过jquery而不是ui使元素可拖动

javascript - Bootstrap - 跨多个选项卡实现一个表单

javascript - 在 iPad 上以全屏模式自动关闭视频

javascript - 无法在 Chrome(打包)应用程序(全屏时)上检测到 ESC 按钮

javascript - React 网络应用程序在加载时启动并请求全屏 - 已编辑

javascript - 使用 CasperJS 提取表元素

javascript - 带有 jQ​​uery 和 textarea 的动态 if/else 语句

javascript - 在javascript中按两个或多个子字符串对字符串数组进行排序

jquery - 带滚动条的垂直居中全屏 div

javascript - 在 iframe 中制作全屏元素