自定义通用URL协议实现在浏览器中打开本机任意程序
以前写过一篇文章,总结了跨浏览器调用的方法。近期遇到一个场景,需要在浏览器中去打开本地的客户端程序,而且限定不允许使用IE。所以我实现了一个通用协议。通过这个协议,可以从浏览器去打开本机任意程序并支持传参数。以下是具体内容。
注册协议
将以下文件保存为.reg
文件。导入注册表项,注册协议ff
。你可以将所有的ff
替换成别的字符串,来实现自己的协议。
Windows Registry Editor Version 5.00 |
用法
在任意浏览器中输入 ff://参数1[,参数2,参数3]
其中参数1是要打开的本地程序的完整路径;参数2,参数3是要传递给该本地程序的参数,可选。
例如:
在浏览器中输入
ff://C:/Windows/System32/notepad.exe
打开记事本程序在浏览器中输入
ff://C:/Windows/System32/notepad.exe,c:/apk_44.conf
打本记事本程序,并且会自动在记事本中打开c:/apk_44.conf
这个文件
需要特别注意的是:
- 参数如果是一个路径,那么路径分隔符需要使用
/
,而不是windows默认的\
- 参数如果是一个路径,那么路径里不允许出现空格、中文。如果路径里的确存在空格、中文,可以通过快捷方式间接解决。如:想打开
C:\Program Files\Microsoft VS Code\Code.exe
,我们可以创建一个快捷方式指向它,然后去调用这个快捷方式,ff://c:/Code.exe.lnk
- 参数如果不是一个路径,但有中文,那么被调用的客户端程序接收到参数将是
unicode
格式的,需要客户端支持识别
与前端结合
在前端开发中,只需要像使用http协议一样,使用这个自定义协议即可。如
<a href="ff://C:/Windows/System32/notepad.exe">打开记事本</a> |
END
- 关联文章: 使用JS检测自定义协议是否存在
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论