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

时间:2018-07-02 02:34:47

标签: 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 ")

   }

   }

在通过f11启用后,如果我给出document.webkitIsFullScreen的结果是假的。我尝试先给出document.documentElement.webkitRequestFullscreen()然后给出document.webkitCancelFullScreen()的方法,也没有用。

1 个答案:

答案 0 :(得分:3)

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

您可以控制的是Fullscreen API,这就是document.exitFullscreendocument.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>