摘要
我正在开发一个包含以下链接标记的内部 Web 应用程序:
<a onclick="window.open('/path/to/my/new/page', 'windowname', 'fullscreen,resizable').focus(); return false;" href="/path/to/my/new/page">
Click here to open a fullscreen window.
</a>
目的是打开一个新的全屏窗口,然后用户可以调整大小/关闭/移动等。但是,在某些情况下,链接实际上会打开一个看起来像是展台模式窗口的内容(没有标题栏、F11、Esc无法退出)。需要明确的是,此链接所在的页面是普通用户启动的IE 11,Windows 7。我们在Chrome 73,Windows 7或Edge,Windows 10中没有遇到此问题。
其他详细信息
当部署到开发环境(其 URL 类似于https://mydevenv.local/mywebapp/
(Intranet))时,此启动链接将按预期工作,但在部署到我们的生产环境https://apps.ourproductiondomain.com/mywebapp/
(只能从我们的网络访问)时则不然。如果我们的组织有特定于站点的ourproductiondomain
设置,我不会感到惊讶,但我不知道从哪里开始寻找在展台启动模式设置。
使用 IE 开发工具,我编辑了链接和位置,并确定当链接从ourproductiondomain
到ourproductiondomain
时,它似乎专门以展台模式启动。编辑指向https://google.com
的链接会按预期以常规全屏模式启动 Google。在 Google 中编辑我的标记也会按预期以常规全屏模式打开我的新页面(链接完全限定为https://apps.ourproductiondomain.com/mywebapp/path/to/my/new/page
)。
有趣的是,将fullscreen
更改为height=600,width=800
有一个标题栏,允许用户控制窗口,但错误版本没有地址/位置栏,而功能版本有。这不是我太关心的细节,但它可能有助于故障排除工作。
该应用程序是在 MVC 5 ASP.NET 开发的,但我认为这并不重要,因为上面的渲染标记在两个部署中完全相同。
问题
有谁知道可能会发生什么?如果这是一个太宽泛的问题,这里有两个我认为可以指出我正确方向的狭义问题:
- 你如何有目的地和一致地在IE 11中使用JavaScript启动展台模式窗口?
- 在哪里可以使用特定于站点的设置(例如"使启动的全屏窗口实际上是展台模式窗口")配置 IE 11?
这听起来像是IE中的一个错误。出于安全目的,不应允许用户脚本在展台模式下打开窗口。
听起来这里确实有一些自定义系统设置在起作用,尽管我不知道在哪里可以找到该设置。
可能的解决方法可能是显式指定您希望窗口框架的某些部分可见:
window.open('/path/to/my/new/page', 'windowname', 'fullscreen,toolbar=yes,location=no,statusbar=yes,menubar=yes,scrollbars=yes,resizable=yes')
另外,我看到您的原始脚本直接在新创建的窗口中使用.focus()
。我认为您不需要它,并且觉得这可能是实际导致触发IE错误的原因。