新网址时文档全屏显示

时间:2013-08-30 05:52:34

标签: javascript jquery browser

我编写了以下代码段以使窗口显示为全屏。

docElm.requestFullscreen();

当我打开一个在同一个窗口中打开的URL时,新的URL会使窗口脱离全屏。我使用以下内容转到下一个网址

window.location.assign("/settings");

如何解决此问题并使窗口保持全屏状态。

1 个答案:

答案 0 :(得分:1)

这不是问题,可以预料。

这有两个原因:

技术

导航到新网站时,全屏模式绑定的文档或其元素之一不再可用或有效。文档或元素未被引用,浏览器将恢复为正常模式。

浏览器中的全屏模式不是实际的全屏模式,例如您在ActiveX /视频播放器中看到的模式。它们只是以屏幕的完整大小显示的元素叠加(例如,通过浏览器内部定义的CSS规则)。这会创建对当前DOM和文档的依赖。

新网站不必具有相同顺序的相同元素等,从浏览器的角度来看,这是一个全新的DOM树。

安全

仅允许当前网址采用全屏模式,用户必须允许每个网站使用全屏模式。

让我们说用户允许当前网站而不是下一个网站 - 如果您的解决方案可以将用户引导到全屏模式的第二个网站,那么您的解决方案将违反用户的偏好。

根据当前Fullscreen API document you can find under section 4.建立全屏模式的标准之一:

  

以前建立过用户偏好,安全风险或   平台限制。

如果浏览器在没有用户允许全屏模式的情况下导航到新网址,则不会满足标准的第一部分。

这当然意味着新导航的网站在允许之前不会以全屏模式显示。

这是important because

  

用户代理应确保,例如通过叠加,即结束   用户意识到全屏显示某些内容。用户代理应该   提供一种退出全屏的方式,始终有效并做广告   这给用户。这是为了防止网站欺骗最终用户   通过重新创建用户代理甚至操作系统环境时   全屏。另请参见requestFullscreen()的定义。

     

防止嵌入式内容仅通过嵌入式全屏显示   通过allowfullscreen属性特别允许的内容   HTML iframe元素将能够全屏显示。这可以防止   全屏不受信任的内容。

涉及安全问题,这就是为什么浏览器在更改网址时不允许您继续全屏模式的原因。

Fullscreen API目前处于实验状态。

可能的解决方法

您可以通过AJAX提供内容来更新页面。

如果您的目的是允许用户以全屏模式浏览各种网站,则需要在浏览器级别解决此问题,即。创建一个应用程序,以某种方式实现一个引擎,如.Net WebBrowser for IE或WebKit - 或 - 分叉现有的WebKit浏览器并在源代码级别覆盖此行为。

然后您可以随意在全屏模式下进行浏览。