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

3
FileRun拥有美丽的类Google Drive风格的文件资源管理器。您可以在此处测试 FileRunDemoSite
当我下载一个文件时,我可以选择是否直接在办公应用程序中打开该文件。

Open Dialog

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

enter image description here

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

enter image description here


这是一个非常吸引人的功能。然而,当我在“打开方式...”菜单中点击“Office”时,什么也没有发生。我正在Mac上使用Chrome。 - shaochuancs
我在使用Chrome和Windows,效果很好。我怀疑这可以进行调整,因为Office不是官方格式。 - Delcon
2个回答

2
感谢Thomas2D让我走上了正确的道路。它的基本工作原理是:
如果您开发一个应用程序,您可以向操作系统注册一个新的协议。 http:// 将由您的默认浏览器处理。 applicationX:// 将由 applicationX 处理,ms-word:// 将由 Word 处理。如果您单击链接,浏览器/操作系统会查找应该处理协议的应用程序,并将请求传递给该应用程序。
对于 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') 或通过设置 location.protocol 来实现,https://www.w3schools.com/jsref/prop_loc_protocol.asp 有一个 jQuery 插件可以实现这一点:jquery.applink.js

0

我个人认为,可以通过特定的URL启动应用程序来实现这一点。

我知道在iOS上可以使用此方法来启动应用程序。在iOS中,类似于mailto:example@example.com的方式可以实现此功能。

<script type="text/javascript" charset="utf-8"> 
window.location = "myapplication://myparams";
</script>

编辑:我终于明白了,您必须使用应用程序 URL 方案。例如,如果您想通过浏览器打开 Excel 文件,则必须使用此 JS 代码。

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

链接的来源谈论了编辑注册表。JavaScript看起来很有前途。你能给我一个可行的例子吗? - Delcon
是的,它在谈论。但是看一下文章的开头。他们正在谈论Content-Type,这可能很重要。 - Tomas2D
如果你有iPhone,打开Safari并输入fb://,会弹出对话框并打开Facebook应用程序。 :) - Tomas2D
@Thomas2D,你让我找对了方向。Content-Type不会触发打开应用程序。我希望这个答案更加完整,我会写一个包含更多信息的答案。 - Delcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接