我编写了以下代码段以使窗口显示为全屏。
docElm.requestFullscreen();
当我打开一个在同一个窗口中打开的URL时,新的URL会使窗口脱离全屏。我使用以下内容转到下一个网址
window.location.assign("/settings");
如何解决此问题并使窗口保持全屏状态。
答案 0 :(得分:1)
这不是问题,可以预料。
这有两个原因:
导航到新网站时,全屏模式绑定的文档或其元素之一不再可用或有效。文档或元素未被引用,浏览器将恢复为正常模式。
浏览器中的全屏模式不是实际的全屏模式,例如您在ActiveX /视频播放器中看到的模式。它们只是以屏幕的完整大小显示的元素叠加(例如,通过浏览器内部定义的CSS规则)。这会创建对当前DOM和文档的依赖。
新网站不必具有相同顺序的相同元素等,从浏览器的角度来看,这是一个全新的DOM树。
仅允许当前网址采用全屏模式,用户必须允许每个网站使用全屏模式。
让我们说用户允许当前网站而不是下一个网站 - 如果您的解决方案可以将用户引导到全屏模式的第二个网站,那么您的解决方案将违反用户的偏好。
根据当前Fullscreen API document you can find under section 4.建立全屏模式的标准之一:
以前建立过用户偏好,安全风险或 平台限制。
如果浏览器在没有用户允许全屏模式的情况下导航到新网址,则不会满足标准的第一部分。
这当然意味着新导航的网站在允许之前不会以全屏模式显示。
用户代理应确保,例如通过叠加,即结束 用户意识到全屏显示某些内容。用户代理应该 提供一种退出全屏的方式,始终有效并做广告 这给用户。这是为了防止网站欺骗最终用户 通过重新创建用户代理甚至操作系统环境时 全屏。另请参见requestFullscreen()的定义。
防止嵌入式内容仅通过嵌入式全屏显示 通过allowfullscreen属性特别允许的内容 HTML iframe元素将能够全屏显示。这可以防止 全屏不受信任的内容。
涉及安全问题,这就是为什么浏览器在更改网址时不允许您继续全屏模式的原因。
Fullscreen API目前处于实验状态。
您可以通过AJAX提供内容来更新页面。
如果您的目的是允许用户以全屏模式浏览各种网站,则需要在浏览器级别解决此问题,即。创建一个应用程序,以某种方式实现一个引擎,如.Net WebBrowser for IE或WebKit - 或 - 分叉现有的WebKit浏览器并在源代码级别覆盖此行为。
然后您可以随意在全屏模式下进行浏览。