我正在做一个Primefaces(6.2.17)项目,这个项目已经有好几年的历史了,到现在为止,它一直在使用Edge中提供的Internet Explorer模式。我们现在想切换到Edge(没有IE模式),当然这会导致一系列问题。其中一个问题是从我们的文件服务器中点击一个按钮打开多个word文档。以下是我们到目前为止一直这样做的:
我们使用office uri schemes和Javascript的window.open()
函数打开word文档,它看起来像这样window.open("window.open(" + url + ", '_blank')"
,URL看起来像这样::ofe|u| <path to worddoc on our fileserver>
。
这种方法在IE-Modus和普通Edge中都有效,但是,在IE-Modus中,我们曾经能够基于一个按钮单击(打开多个word文档)进行多个这样的调用。如果我尝试在Edge中做同样的事情,我可以在浏览器控制台中看到这些消息:
已启动“ms-word:ofe”的外部处理程序|使用|https://pathToDocument.doc '
不允许启动'ms-word:ofe|使用|https://pathToAnotherDocument.doc’,因为需要用户手势。
因此,它适用于一个元素,但其他元素将需要用户交互。有什么办法可以绕过这一点吗?或者我可以使用任何其他方式让用户基于单个按钮点击下载多个word文档(例如使用Primefaces p:fileDownload)?
1条答案
按热度按时间rjjhvcjd1#
此功能称为flood protection,旨在防止向用户发送多个提示,并将其限制为每个手势一个。这是Edge和Chrome等浏览器中的预期行为。
唯一的解决方案/变通方法是在Microsoft Edge中应用名为DoNotSilentlyBlockProtocolsFromOrigins的组策略。该值应类似于:
[{"allowed_origins": ["example.com", "http://www.example.com:8080"], "protocol": "ms-word"}]
。之后,您应该能够规避错误。