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

时间:2017-06-30 08:21:58

标签: javascript google-chrome httpresponse onedrive

FileRun有一个漂亮的File-Explorer Google-Drive风格。你可以在这里试驾FileRunDemoSite

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

Open Dialog

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

enter image description here

我该如何实现这种行为?关于SA的所有现有答案都表明这是不可能的,所以这对其他人来说可能也很有趣。甚至谷歌都没有实现这一点。是否有跨浏览器解决方案?

Onedrive也是这样做的:

enter image description here

2 个答案:

答案 0 :(得分:1)

感谢Thomas2D让我走上正轨。它基本上是如何工作的:

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

对于Office文档,URI有点复杂 - 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')或设置location.protocolhttps://www.w3schools.com/jsref/prop_loc_protocol.asp

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

答案 1 :(得分:0)

我个人认为这是通过特定网址启动应用程序来完成的。

我知道这适用于iOS以启动应用程序。在iOS中,它是由某种东西完成的(simillar to mailto:example@example.com

<script type="text/javascript" charset="utf-8"> 
window.location = "myapplication://myparams";
</script>
编辑:我终于明白了,你必须使用应用程序网址方案。例如,如果要通过浏览器打开Excel文件,则必须使用此JS代码。

window.location.href = encodeURI('ms-excel:ofe|u|http://example.com/excel.xlsx');