当新建url时,文档将退出全屏显示



我已经编写了以下代码段来将窗口设置为全屏。

docElm.requestFullscreen();

当我在同一个窗口中打开一个url时,新的url会使窗口脱离fulscreen。我用下面的网址转到下一个网址,

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

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

这不是问题,是意料之中的事。

这有两个原因:

技术

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

浏览器中的全屏模式并不是像您在ActiveX/视频播放器中看到的那样的实际全屏模式。它们只是以屏幕的全尺寸显示的元素覆盖(例如,通过浏览器内部定义的CSS规则)。这创建了对当前DOM和文档的依赖关系。

新站点不需要以相同的顺序具有相同的元素等,从浏览器的角度来看,它是一个全新的DOM树。

安全性

全屏模式只允许用于当前url,并且必须由用户为每个网站允许。

假设用户允许当前站点,但不允许下一个站点——如果您的解决方案可以在全屏模式下将用户引导到第二个站点,则您的解决方法将违反用户的偏好。

在当前的Fullscreenneneneba API文档中,您可以在第4节中找到。建立全屏模式的标准之一:

存在先前确定的用户偏好、安全风险或平台限制。

当浏览器在没有用户允许全屏模式的情况下导航到一个新的url时,标准的第一部分是不满足的

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

这很重要,因为:

用户代理应确保,例如通过覆盖用户知道某个内容显示为全屏。用户代理应提供一种退出全屏的方式,该方式始终有效并做广告这是给用户的。这是为了防止网站欺骗最终用户当全屏显示。另请参阅requestFullscreen()的定义。

防止嵌入内容变成仅全屏嵌入通过HTML iframe元素将能够全屏显示。这样可以防止不受信任的内容无法全屏显示。

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

全屏幕API目前处于实验状态。

可能的解决方法

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

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

然后你可以允许在全屏模式下随意浏览。

最新更新