如何在客户端启动桌面应用程序

hgu*_*ser 16 javascript

在我的网页中,我必须在客户端的计算机上启动桌面应用程序(如果已安装).知道我怎么能这样做吗?

如果应用程序是MS Office或Adobe Reader,我知道如何启动它们,但我想要启动的应用程序是一个自定义应用程序.你无法在互联网上找到它.

我该如何打开该应用程序?

RaY*_*ell 16

基本上,除非应用程序注册将触发它的协议,否则无法实现.如果这样做,您需要做的就是使用此协议提供链接

yourcustomapp://some.parameters

第三方应用程序可以与浏览器集成的另一种方式是它是否作为插件挂钩.这就是Flash应用程序的工作方式等

如果您尝试启动的应用程序不支持类似的功能,那么实现您想要的功能几乎是不可能的.

  • 你能提供一个解释如何定义和注册这样一个协议的链接吗? (5认同)

ret*_*one 10

浏览器沙箱禁止您执行本地资源,这是有理由的 - 阻止网站使用恶意代码破坏您的邮箱.我一直在研究相同的功能.

我发现的唯一解决方案是在Mozilla Firefox中构建一个可以启动应用程序的扩展程序.扩展程序位于沙箱之外,因此可以执行本地资源.请参阅此页面了解如何执行此操作.您可以使用crossrider进行跨浏览器操作,但我还没有成功.

您也可以构建一个从Web服务填充的胖客户端,并通过上面提到的扩展从浏览器启动.这就是我正在做的绕过沙箱的事情.我正在使用本地XUL.

有关其他讨论,请参阅我的问题


sym*_*ean 9

首先 - 你不能在任何类型的便携式机制中使用javascript.

如果应用程序是ms office或adobe reader,我知道如何启动它们

不,你不知道 - 你知道如何发送一个文档,浏览器与这些应用程序关联,并调用它们提供响应的本地副本的名称.你不能只是启动程序.

你只需要为你的应用程序做同样的事情 - 发明一个新的mime类型(主要类型是'应用程序',按照惯例,非标准的次要类型以'x-'为前缀,所以你可以使用application/x- hguser)然后将该mimetype与相关的程序浏览器端相关联.

即:您需要显式配置每个浏览器

  • 您能否提供包含有关关联自定义mime类型的详细信息的链接?对于我要在封闭环境中解决的问题,这可能无限有用。 (2认同)

小智 5

我已经在一些复杂的生产环境中解决了这个问题.

我使用以下代码来解决这个问题:

function launch(p_app_path)
{
   var oShell = new ActiveXObject("WScript.Shell");
   oShell.Run('"' + p_app_path + '"', 1);
}
Run Code Online (Sandbox Code Playgroud)

在IE 选项>安全性>自定义级别> ActiveX控件和插件>初始化和脚本未标记为可安全执行脚本的ActiveX控件中,将值设置为" 询问"或" 活动".

当您的网站包含在特定的安全上下文中时,这不是安全问题.正如他们所说,建造天然气厂并不值得.

  • 这仅适用于IE或其他浏览器吗? (2认同)