IE 浏览器
通过 IE 的 ActiveX 控件实现。利用 ActiveXObject 对象,通过脚本的方式调用 cmd,并执行打开本地应用程序的命令。
下面是通过 IE 打开火狐浏览器的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>通过IE打开火狐浏览器</title>
</head>
<body>
<button onclick="test()">测试</button>
<script>
function test() {
// 判断是否为 IE 浏览器
if (typeof ActiveXObject !== 'undefined') {
// IE 浏览器
try {
var objShell = new ActiveXObject('WScript.Shell');
var result = objShell.Run('cmd.exe /c start firefox.exe http://www.baidu.com', 0, true);
if (result !== 0) {
// 未安装火狐
}
} catch (e) {
// Automation 服务器不能创建对象——未启用 ActiveX 控件
}
} else {
// 非 IE 浏览器处理
}
}
</script>
</body>
</html>
注意:使用该方式,首先需要启用 IE 的 ActiveX 控件。
IE ActiveX 控件启用说明
第一步:打开IE浏览器,选择工具栏中的工具 -> Internet选项
第二步:选择【安全】标签 –> Internet -> 单击自定义级别;
第三步:在单击自定义级别打开的面板中,找到ActiveX控件和插件,启用下图红框圈出的相应选项;
第四步:设置完成后,单击确定退出设置区域;重启IE浏览器,即可生效。
通用方法(支持IE/火狐/谷歌)
通过注册表方式启动本地 exe 程序。
第一步:新建 .reg 注册表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\myWebshell]
@="URL:myWebshell Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\myWebshell\DefaultIcon]
@="D:\\Soft\\Navicat Premium\\navicat.exe"
[HKEY_CLASSES_ROOT\myWebshell\shell]
[HKEY_CLASSES_ROOT\myWebshell\shell\open]
[HKEY_CLASSES_ROOT\myWebshell\shell\open\command]
@="\"D:\\Soft\\Navicat Premium\\navicat.exe\" \"%1\""
第二步:双击执行 .reg 文件,添加到注册表。
第三步:在网页上创建调用链接:协议名://+自定义参数
<a href="myWebshell://hello">打开 Navicat </a>
判断协议是否存在
使用 protocolcheck.js 库实现。
protocolCheck(`myWebshell://hello`, function () {
alert('当前电脑未检测到 myWebshell 程序。');
});