本文介绍如何使用JavaScript的ActiveXObject对象检测本地客户端软件是否已安装。通过尝试创建特定ProgID的ActiveX对象,若成功则执行关联操作,若抛出异常则提示用户安装并跳转至下载链接。该方法常用于实现类似迅雷链接的外部协议调用场景,关键在于正确获取客户端在注册表中注册的ProgID。
ActiveXObject检测客户端安装原理
对于公司内部程序,通常通过调用外部协议来正常运行,但这需要配合特定的客户端软件。因此,我们需要通过JavaScript来判断用户是否已安装该客户端。如果未安装,则引导用户跳转到下载页面,其逻辑类似于常见的迅雷或快车下载链接。经过调研,具体的实现方案如下。
具体代码示例如下:
<script type="text/javascript">
function checkClient(obj){
try{
var a = new ActiveXObject("suncloud.app");
obj.href = obj.path;
}catch(e){
alert("请先安装客户端");
obj.href="http://xxxx/client.zip";
}
}
</script>
<a href="#" onclick="checkClient(this)" path="suncloud://QUFodHRwOi8vZG93bi5zYW5kYWkubmV0L1RodW5kZXI1Ljkg==">连接</a>
在ActiveXObject中填写的参数,对应的是客户端软件在Windows注册表中注册的ProgID信息。例如,若要检测迅雷客户端,应填写ThunderAgent.Agent或ThunderAgent.Agent.1。