在我的网页中,如果安装了客户端计算机,我必须在客户端计算机上启动桌面应用程序。知道我该怎么做吗?
如果应用程序是 MS Office 或 Adobe Reader,我知道如何启动它们,但我要启动的应用程序是自定义应用程序。你无法在互联网上找到它。
如何打开应用程序?
在我的网页中,如果安装了客户端计算机,我必须在客户端计算机上启动桌面应用程序。知道我该怎么做吗?
如果应用程序是 MS Office 或 Adobe Reader,我知道如何启动它们,但我要启动的应用程序是自定义应用程序。你无法在互联网上找到它。
如何打开应用程序?
除非应用程序注册将触发它的协议,否则基本上不可能实现。如果这样做,您需要做的就是使用此协议提供链接
yourcustomapp://some.parameters
3rd 方应用程序与浏览器集成的另一种方式是将其作为插件挂钩。这就是 Flash 应用程序的工作方式等。
如果您尝试启动的应用程序不支持类似的功能,则几乎不可能实现您想要的功能。
浏览器沙箱禁止您执行本地资源,这是有充分理由的 - 以阻止网站使用恶意代码破坏您的盒子。我一直在研究相同的功能。
我找到的唯一解决方案是在 Mozilla Firefox 中构建一个可以启动您的应用程序的扩展程序。扩展存在于沙箱之外,因此它们可以执行本地资源。请参阅此页面了解如何执行此操作。您可以使用crossrider跨浏览器完成此操作,但我还没有成功。
您也可以构建一个从 Web 服务填充的胖客户端,并通过上述扩展从浏览器启动。这就是我为绕过沙箱所做的工作。为此,我正在使用本地 XUL。
有关其他讨论,请参阅我的问题。
首先 - 你不能在任何类型的便携式机制中使用 javascript 来做到这一点。
如果应用程序是 ms office 或 adobe reader,我知道如何启动它们
不,您不知道 - 您知道如何发送文档,浏览器将其与这些应用程序关联并调用它们并提供响应的本地副本的名称。你不能只是启动程序。
你只需要对你的应用程序做同样的事情——发明一个新的 mime 类型(主要类型是“应用程序”,按照惯例,非标准次要类型以“x-”为前缀,所以你可以使用 application/x- hguser) 然后将该 mimetype 与相关的程序浏览器端相关联。
即:您需要明确配置每个浏览器
我已经在一些复杂的生产环境中遇到了这个问题。
我使用以下代码来解决这个问题:
function launch(p_app_path)
{
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run('"' + p_app_path + '"', 1);
}
在 IE选项 > 安全 > 自定义级别 > ActiveX 控件和插件 > 初始化和脚本 ActiveX 控件没有标记为安全的脚本,将值设置为询问或活动。
当您的网站包含在特定的安全上下文中时,这不是安全问题。正如他们所说,建造天然气厂是不值得的。
单靠 JavaScript 无法做到这一点。(不,即使使用 MS Office 或 Adobe Reader 也不行。)谢天谢地。
有许多旧方法,包括使用 ActiveX,它们可能适合您的需要。正如其他人在输入时指出的那样,您可以根据 mime 类型或协议等自定义响应。
无论您怎么看,您都需要控制最终用户的浏览器。如果您处于可以指定策略的封闭环境中(用户必须使用具有特定配置的特定浏览器),那么您将需要这样做。对于无法控制最终用户的开放环境,您很不走运。