【问题标题】:After enabling full screen through f11 disable full screen through javascript通过 f11 启用全屏后通过 javascript 禁用全屏
【发布时间】:2018-12-10 05:28:27
【问题描述】:

通过按下下面的按钮,我可以启用和禁用全屏模式,但在按下 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() 也没有工作。

【问题讨论】:

  • 那么,您只是在使用 webkit 浏览器(如 Chrome)时遇到问题?
  • 你@JaromandaX。我也想要 Mozilla 和 ie 中的解决方案
  • @JaromandaX 不。再一次,这个 API 的实现是一团糟。Gecko 做了 camelCase fullScreen,只有他们做...
  • 抱歉,MDN 文档有误!! (这是第一次!)@Kaiido - 我不应该和你争论:p
  • 哦,我经常出错,在 webkit-ms-o-moz-f[s||S] ApI(规范需要 fs,但我担心在我们到处都没有前缀之前还需要一些时间......)

标签: javascript events cross-browser


【解决方案1】:

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');
};
&lt;p&gt;From Firefox, try to enter or exit FullScreen mode&lt;/p&gt;

【讨论】:

  • 所以你的回答是不可能实现这个功能?
  • @Ajith 就是这样。但如果它对你很重要,就强制使用 JS API,这样你就可以控制了。 (可能有办法通过查看window.screen 对象来猜测它,但没有什么太稳定的可用。)
  • 好的,谢谢。我想现在使用这种方法,当通过 f11 创建全屏并且用户按下按钮时,我将创建一个通知(弹出窗口)并告诉“按 f11 禁用全屏”@凯多
  • 很遗憾,F11 不是这种模式的通用键。在 osX 上,它是“cmd + shift + F”,甚至只需单击应用程序顶部栏的展开按钮,我猜在每个操作系统上都有一个“查看 > 进入全屏”,很难捕捉到....
猜你喜欢
  • 2011-11-03
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多