javascript - 在 Chrome 中强制自动打开对话框

标签 javascript google-chrome httpresponse onedrive

FileRun 有一个漂亮的 File-Explorer Google-Drive 样式。您可以在这里试驾 FileRunDemoSite

当我下载一个文件时,我可以选择是否要在 Office 应用程序中直接打开该文件。

Open Dialog

当我点击 Office 时,谷歌提示我使用 Chrome 打开文件对话框。文件直接从该位置打开,而不是保存在/downloads/文件夹中。

enter image description here

我怎样才能实现这种行为? SA 上的所有现有答案都表明这是不可能的,因此其他人也可能对此感兴趣。甚至谷歌都没有实现这一点。有跨浏览器的解决方案吗?

Onedrive 也这样做:

enter image description here

最佳答案

感谢 Thomas2D 让我走上了正确的轨道。它的基本工作原理是:

如果您开发应用程序,您可以向操作系统注册一个新协议(protocol)。 http:// 将由您的默认浏览器处理。 applicationX://会被applicationX处理,ms-word://会被word处理。如果您单击一个链接,浏览器/操作系统会查找应由哪个应用程序处理协议(protocol)并将请求传递给该应用程序。

对于 Office 文档,URI 有点复杂 ms-excel:ofv|u|http://contoso/Q4/budget.xls。您可以只读/以编辑/作为模板打开它。查看此文档以获取所有选项的详细说明:Office URI Schemes

对于其他应用程序,请检查该应用程序的 URI 方案。

如何在网站上使用它:

不建议在 Dom 元素的 href 属性中设置指向应用程序的链接。您无法检查应用程序是否已安装。

如果您使用 Javascript,您可以检查请求是否超时/失败并改用 http://

.在 href: window.location.href = encodeURI('ms-excel:ofe|u|http://example.com/excel.xlsx') 中设置协议(protocol)或通过设置 location.protocol, https://www.w3schools.com/jsref/prop_loc_protocol.asp

有一个 jQuery 插件可以做到这一点:jquery.applink.js

关于javascript - 在 Chrome 中强制自动打开对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44841888/

相关文章:

php - IE :"This.container"为 null 或不是对象

c# - 通过 Response 发送内存中生成的 .PDF 文件

javascript - 如何检查音频是否为空?

javascript - 问题计算表滚动条位置

javascript - 解析云代码链 promise

javascript - Chrome form.submit() 处理程序忽略必填字段

css - 浏览器缩放更改时内容被裁剪

javascript - 远程表单请求后 Chrome 滚动到页面顶部

Python:即使互联网关闭,响应代码也会返回 200?

javascript - Vue router 不会重新初始化子组件