在我的网页中,如果客户端安装了桌面应用程序,我需要启动它。有没有什么办法可以实现?
如果要启动的应用程序是 MS Office 或 Adobe Reader,我知道如何启动它们,但我想要启动的应用程序是自定义的,无法在互联网上找到。
我该怎么打开这个应用程序?
在我的网页中,如果客户端安装了桌面应用程序,我需要启动它。有没有什么办法可以实现?
如果要启动的应用程序是 MS Office 或 Adobe Reader,我知道如何启动它们,但我想要启动的应用程序是自定义的,无法在互联网上找到。
我该怎么打开这个应用程序?
基本上,除非应用程序注册将触发它的协议,否则不可能实现。如果应用程序这样做了,您需要做的就是使用该协议提供一个链接
yourcustomapp://some.parameters
另一种第三方应用程序与浏览器集成的方法是作为插件连接到浏览器。这就是Flash应用程序等的工作原理。
如果您尝试启动的应用程序不支持此类操作,则将几乎不可能实现您所需的功能。
浏览器沙箱禁止您执行本地资源,这是有充分理由的-为了防止网站通过恶意代码破坏您的计算机。我一直在研究同样的功能。
我找到的唯一解决方案是在Mozilla Firefox中构建一个扩展程序,可以启动您的应用程序。扩展程序位于沙箱之外,因此可以执行本地资源。请参见此页面了解如何操作。您也可以尝试使用crossrider跨浏览器进行操作,尽管我还没有成功过。
或者,您可以构建一个厚客户端,从网络服务填充数据,并通过上述扩展从浏览器启动。这就是我用来绕过沙箱的方法。我正在使用本地XUL来实现这一点。
更多讨论请参见我的问题。
不,你不知道 - 你只知道如何发送文档,然后浏览器会将其与这些应用程序关联并提供响应本地副本的名称来调用它们。你不能直接启动这些程序。如果应用程序是Microsoft Office或Adobe Reader,我知道如何启动它们。
我在一些复杂的生产环境中遇到了这个问题。
我使用以下代码来解决:
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类型或协议等自定义响应。
无论如何,您都需要控制最终用户的浏览器。如果您处于一个可以规定策略(用户必须使用特定的浏览器,并具有特定的配置)的封闭环境中,则必须这样做。对于没有控制最终用户的开放环境,您将毫无办法。
我目前在使用SiteFusion时非常成功。它是一个PHP客户端/服务器应用程序框架,可以从在Apache中运行的服务器守护程序中提供XUL/JavaScript应用程序。您可以通过XULRunner中的非常轻量级的客户端或者潜在地通过扩展从网页上访问应用程序。客户端可以在任何平台上执行,并且它们位于浏览器沙盒之外,因此可以访问本地资源,例如可执行文件。这是一个相当优雅的解决方案,他们的网站提供了很好的示例和文档,他们的论坛也非常响应。我实际上发现了一个小错误,在论坛上发布了一个关于传递参数到本地可执行文件的问题,然后由首席开发人员在不到15分钟内修复了这个问题。总体来说,非常令人印象深刻!