全屏API和外部链接

问题描述:

我试图用全屏API打开一个新页面(使用不同的布局)。当用户点击开放课程链接时,适当的页面/布局将以全屏模式打开。全屏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只接受打开同一个页面或在全屏模式下隐藏的元素。我知道这是预期的行为。

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

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

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

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。

希望这是足够的信息,让齿轮滚动和解决这个问题。我相信你可以理解为什么这是浏览器安全性的一部分,但是绕过使用可扩展性的可能性也是存在的,因此可以说是一种非常重要的因素。如果他们真的希望保持浏览器的安全,那么他们就没有选择自动下载或自动运行的东西,并且javascript无法使用UI阻止对话框或播放音频进行垃圾邮件 - 等等。但我离题了。在“浏览器安全”的幌子下使用这个功能是一个非常弱的理由,因为有更多的麻烦问题。