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

After enabling full screen through f11 disable full screen through javascript

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

 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 ")

   }

   }

同样在通过 f11 启用后,如果我给出 document.webkitIsFullScreen 结果给出错误。我尝试给出 document.documentElement.webkitRequestFullscreen() 然后 document.webkitCancelFullScreen() 也没有用。

F11 全屏模式是一项 browser/OS 功能,您无法从 javascript 访问,就像您无法访问一样地址栏的显示方式。

你能控制的是Fullscreen API,这就是document.exitFullscreen,或者document.fullscreenElement的基础

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


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

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