全屏API和外部链接

时间:2016-08-13 16:35:45

标签: javascript fullscreen html5-fullscreen

我尝试使用全屏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只接受在全屏模式下打开同一页面或隐藏元素。我知道这是预期的行为。

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

是否有任何解决方法可以实现?

1 个答案:

答案 0 :(得分: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应用程序。

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

您也可以尝试更低级别的事件挂钩或尝试模拟它们(例如假冒' Click'硬件事件)。如果需要,可以使用其他语言(例如Flash,Java或.NET)来协助。

希望这足以让齿轮滚动并解决问题。我相信你可以理解为什么这是浏览器安全性的一部分,但也有可能绕过使用可扩展性,所以有一种m00t因素imho。如果他们真的希望保持浏览器安全,那么他们将无法选择自动下载或自动运行内容,并且javascript无法通过UI阻止对话框或播放音频进行垃圾邮件 - 以及等等。但我离题了。在“浏览器安全性”的幌子下缺乏使用此功能。鉴于那里存在更多麻烦问题,这是一个非常微弱的论点。