通过 f11 启用全屏后,通过 javascript 禁用全屏

Aji*_*ith 2 javascript events cross-browser

通过按下下面的按钮,我可以启用和禁用全屏模式,但在按下 f12 后,我无法禁用全屏模式。我参考了其他答案,他们只提供了一种检测窗口是否处于全屏模式的方法。我是无法获取用于从全屏(通过 f11 键制作)禁用全屏模式的代码。我尝试通过代码触发 f11 但它没有用。在所有浏览器中是否有任何解决方案?

 Html code:
     <button id="fullbutton" width="60px" height="60px" alt="logo" onclick="toggleFullScreen(this)">On</button>

Javascript code :

function toggleFullScreen(element) {
//first part 

if((window.fullScreen) || (window.outerWidth === screen.width && window.outerHeight == screen.height)) {

console.log("full screen is enabled ")

if (document.exitFullscreen)
    document.exitFullscreen();
else if (document.msExitFullscreen)
    document.msExitFullscreen();
else if (document.mozCancelFullScreen)
    document.mozCancelFullScreen();
else if (document.webkitExitFullscreen)
    document.webkitExitFullscreen();


}else {

//second part


if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {


if (document.documentElement.requestFullScreen) {  
  document.documentElement.requestFullScreen();  
} else if (document.documentElement.mozRequestFullScreen) {  
  document.documentElement.mozRequestFullScreen();  //for mozilla
} else if (document.documentElement.webkitRequestFullScreen) {      

 document.documentElement.webkitRequestFullScreen
      (Element.ALLOW_KEYBOARD_INPUT);   //for chrome
     }  else if (document.documentElement.msRequestFullscreen) {
    document.documentElement.msRequestFullscreen();
}//for ie

        //   document.getElementById('fullbutton').innerText = 'Off';

   } else {  

    // document.getElementById('fullbutton').innerText = 'On';
    if (document.msFullscreenElement) {
    document.msExitFullscreen();
    } //for ie
   if (document.cancelFullScreen) {  
     document.cancelFullScreen();  
    }   
  else if (document.mozCancelFullScreen) {  
      document.mozCancelFullScreen();   //for mozilla
   } else if (document.webkitCancelFullScreen) {  
      document.webkitCancelFullScreen();  
   }//for chrome

    }



  console.log("full screen is not enabled ")

   }

   }
Run Code Online (Sandbox Code Playgroud)

同样在通过 f11 启用后,如果我给出的document.webkitIsFullScreen结果是错误的。我尝试给出document.documentElement.webkitRequestFullscreen(),然后document.webkitCancelFullScreen()那也不起作用。

Kai*_*ido 5

F11 全屏模式是一种浏览器/操作系统功能,您无法通过 javascript 访问它,就像您无法访问地址栏的显示方式一样。

您可以控制的是Fullscreen API,这就是document.exitFullscreendocument.fullscreenElement所基于的。

但是这个全屏 API 和那个不一样F11


Ps:实际上,有display-mode媒体查询应该让我们知道它。
但目前似乎只有 FireFox 实现了它。

const query = matchMedia("all and (display-mode: fullscreen");
query.onchange = e => {
  console.log(query.matches ? 'entered' : 'exited', 'fullscreen mode');
};
Run Code Online (Sandbox Code Playgroud)
<p>From Firefox, try to enter or exit FullScreen mode</p>
Run Code Online (Sandbox Code Playgroud)