在我的网页中,我必须在客户端的计算机上启动桌面应用程序(如果已安装)。知道我怎么能这样做吗?
如果应用程序是MS Office或Adobe Reader,我知道如何启动它们,但我想要启动的应用程序是一个自定义应用程序。你无法在互联网上找到它。
如何打开该应用程序?
答案 0 :(得分:15)
除非应用程序注册将触发它的协议,否则基本上不可能实现。如果这样做,您需要做的就是使用此协议提供链接
yourcustomapp://some.parameters
第三方应用程序可以与浏览器集成的另一种方式是它是否作为插件挂钩。这就是Flash应用程序的工作方式等。
如果您尝试启动的应用程序不支持类似的功能,那么几乎无法实现您想要的功能。
答案 1 :(得分:10)
浏览器沙箱禁止您执行本地资源,这是有理由的 - 阻止网站使用恶意代码破坏您的邮箱。我一直在研究相同的功能。
我发现的唯一解决方案是在Mozilla Firefox中构建扩展程序,可以启动您的应用程序。扩展程序位于沙箱之外,因此可以执行本地资源。有关如何执行此操作,请参阅this page。你可以使用crossrider进行跨浏览,但我还没有成功。
您也可以构建一个从Web服务填充的胖客户端,并通过上面提到的扩展从浏览器启动。这就是我正在做的绕过沙箱的事情。我正在使用local XUL。
有关其他讨论,请参阅my question。
答案 2 :(得分:9)
首先关闭 - 你无法在任何类型的便携式机制中使用javascript。
如果应用程序是ms office或adobe reader,我知道如何启动它们
不,您不知道 - 您知道如何发送文档,浏览器会将这些文档与这些应用程序关联,并调用它们提供响应本地副本的名称。你不能只是启动程序。
你只需要为你的应用程序做同样的事情 - 发明一个新的mime类型(主要类型是'应用程序',按照惯例,非标准的次要类型以'x-'为前缀,所以你可以使用应用程序/ x-hguser)然后将该mimetype与相关的程序浏览器端相关联。
即:您需要明确配置每个浏览器
答案 3 :(得分:5)
我已经在一些复杂的生产环境中解决了这个问题。
我使用以下代码来解决这个问题:
function launch(p_app_path)
{
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run('"' + p_app_path + '"', 1);
}
在IE 选项中>安全>自定义级别> ActiveX控件和插件>初始化和脚本ActiveX控件未标记为可安全编写脚本,将值设置为询问或活动。
当您的网站包含在特定的安全上下文中时,这不是安全问题。 正如他们所说,建造天然气厂并不值得。
答案 4 :(得分:1)
单靠JavaScript无法做到这一点。 (不,甚至不使用MS Office或Adobe Reader。)谢天谢地。
有许多旧方法,包括using ActiveX,可能会满足您的需求。正如其他人在输入时指出的那样,您可以根据mime类型或协议等自定义响应。
无论你如何看待它,你都需要控制最终用户的浏览器。如果您处于可以指定策略的密切环境中(用户必须使用特定浏览器,具有特定配置),那么您将需要这样做。对于无法控制最终用户的开放环境,您运气不佳。
答案 5 :(得分:0)
我现在通过SiteFusion获得了很多成功。它是一个PHP客户端/服务器应用程序框架,它从Apache中运行的服务器守护程序提供XUL / JavaScript应用程序。您可以从XULRunner中的非常瘦的客户端访问应用程序,也可以使用扩展从Web页面访问。客户端可以在任何平台上执行,并且它们位于浏览器沙箱之外,因此您可以访问本地资源(如可执行文件)。它是一个相当优雅的解决方案,他们的网站提供了很好的示例和文档,他们的论坛非常敏感。我实际上在向本地可执行文件传递参数时发现了一个小错误,发布了一个关于论坛的问题,并且它由主要开发人员在15分钟内修复。非常令人印象深刻,整体而言!