【问题标题】:Fullscreen API and external links全屏 API 和外部链接
【发布时间】:2016-08-14 00:51:21
【问题描述】:

我正在尝试使用全屏 API 打开一个新页面(具有不同的布局)。当用户点击打开的课程链接时,正确的页面/布局将以全屏模式打开。

我正在使用这个函数来触发全屏模式:

// Find the right method, call on correct element
function launchIntoFullscreen(element) {
  if(element.requestFullscreen) {
    element.requestFullscreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if(element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

// Launch fullscreen for browsers that support it!
launchIntoFullscreen(document.documentElement); // the whole page

问题是,API 只接受在全屏模式下打开同一页面或隐藏元素。我知道这是预期的行为。

当用户点击正确的链接时,我需要以全屏模式打开不同的页面。

是否有任何解决方法可以使它成为可能?

【问题讨论】:

    标签: javascript fullscreen html5-fullscreen


    【解决方案1】:

    这是我目前用来切换全屏模式的。

    function fullscreen() {
        var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) ||
            (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) ||
            (document.mozFullScreenElement && document.mozFullScreenElement !== null) ||
            (document.msFullscreenElement && document.msFullscreenElement !== null);
        if (!isInFullScreen) {
            if (document.documentElement.requestFullscreen) {
                document.documentElement.requestFullscreen();
            } else if (document.documentElement.mozRequestFullScreen) {
                document.documentElement.mozRequestFullScreen();
            } else if (document.documentElement.webkitRequestFullScreen) {
                document.documentElement.webkitRequestFullScreen();
            } else if (document.documentElement.msRequestFullscreen) {
                document.documentElement.msRequestFullscreen();
            }
        } else {
            if (document.exitFullscreen) {
                document.exitFullscreen();
            } else if (document.webkitExitFullscreen) {
                document.webkitExitFullscreen();
            } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
            } else if (document.msExitFullscreen) {
                document.msExitFullscreen();
            }
        }
    }
    

    您无法全屏启动新页面,因为它受到浏览器安全性的限制(如您所见)。但是,您可以全屏打开 .NET 或 Java 应用程序。

    尝试绕过浏览器安全性的一个建议是提供一个插件,该插件将与您的页面一起使用,将其功能扩展到用户桌面。

    您还可以尝试更底层的事件挂钩或尝试模拟它们(例如,伪造“点击”硬件事件)。如果需要,可以使用另一种语言来辅助,例如 Flash、Java 或 .NET。

    希望这是足够的信息,可以使齿轮运转起来并解决该问题。我相信您可以理解为什么这是浏览器安全性的一部分,但是也存在绕过使用可扩展性的可能性,所以有点像 m00t 因素恕我直言。如果他们真的希望确保浏览器安全,那么他们将无法选择自动下载或自动运行内容,并且 javascript 将无法通过 UI 阻止对话框或播放音频来发送垃圾邮件——等等.但我离题了。在“浏览器安全”的幌子下缺乏使用这个功能是一个非常薄弱的​​论点,因为那里有很多更麻烦的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      相关资源
      最近更新 更多