Javascript
- 利用URL Protocol实现从浏览器打开本地应用程序的方案
- 需求前景:
- 实现思路:
- 实现步骤:
- 总结:
利用URL Protocol实现从浏览器打开本地应用程序的方案
利用URL Protocol实现从浏览器打开本地应用程序的方案,例如,我们可能会遇见从谷歌浏览器跳转到IE浏览器的某个需求。
需求前景:
在谷歌浏览器访问管理系统,在使用某个第三方插件或url时,对方仅支持在IE浏览器下使用插件,在这种前提下,需要实现从谷歌浏览器打开IE浏览器并自动跳转到某url下的方案。
实现思路:
- 利用注册表,注册自定义的URL protocol,例如 bssoft://,在这个协议(注册表)中,定义“打开本地ie浏览器”的操作。
- 在js中添加跳转代码,例如我需要在点击某个按钮时,通过自定义协议访问到注册表项,并打开IE浏览器,指定业务url地址。
实现步骤:
- 编写注册表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\bssoft]
@="bssoft Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\bssoft\DefaultIcon]
@="C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"
[HKEY_CLASSES_ROOT\bssoft\shell]
@=""
[HKEY_CLASSES_ROOT\bssoft\shell\open]
@=""
[HKEY_CLASSES_ROOT\bssoft\shell\open\command]
@="C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe http://localhost/plugin/camera/preview?id=%1 "
将文件保存为 bssoft.reg ,其中 bssoft 是自定义的名称, 文件末行的 %1 是向浏览器传递的参数。
- 将注册表进行注册,双击运行 bssoft.reg。
- 在你的业务代码中,添加访问事件
table.click('fast_login', function (btn) {
var id = $(btn).data('hostid');
window.location.href = "bssoft://"+id;
});
- 此时,在点击按钮后,浏览器会提示你是否打开 IE ,打开后 IE浏览器会自动访问配置的url地址。
总结:
为什么需要利用注册表实现?
因为ActiveXObject 对象是IE浏览器专属,并且谷歌浏览器对于NPAPI 插件在42版本后就抛弃了,以及浏览器自身的安全策略定义不允许用户通过js访问应用程序或shell脚本等。
那么,在日常开发工作中,大部分公司已经不再使用IE开发,换成谷歌或其他非IE内核浏览器时,一旦使用某个插件对于跨浏览器的不兼容性,必须通过某种方案实现浏览器之间的跳转。
这个步骤浏览器自身是不支持的,所以延伸下来,通过自定义的URL Protocol 注册表来实现。 同样的原理可参照迅雷下载链接,百度网盘下载链接。
Javascript
- 利用URL Protocol实现从浏览器打开本地应用程序的方案
- 需求前景:
- 实现思路:
- 实现步骤:
- 总结:
利用URL Protocol实现从浏览器打开本地应用程序的方案
利用URL Protocol实现从浏览器打开本地应用程序的方案,例如,我们可能会遇见从谷歌浏览器跳转到IE浏览器的某个需求。
需求前景:
在谷歌浏览器访问管理系统,在使用某个第三方插件或url时,对方仅支持在IE浏览器下使用插件,在这种前提下,需要实现从谷歌浏览器打开IE浏览器并自动跳转到某url下的方案。
实现思路:
- 利用注册表,注册自定义的URL protocol,例如 bssoft://,在这个协议(注册表)中,定义“打开本地ie浏览器”的操作。
- 在js中添加跳转代码,例如我需要在点击某个按钮时,通过自定义协议访问到注册表项,并打开IE浏览器,指定业务url地址。
实现步骤:
- 编写注册表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\bssoft]
@="bssoft Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\bssoft\DefaultIcon]
@="C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"
[HKEY_CLASSES_ROOT\bssoft\shell]
@=""
[HKEY_CLASSES_ROOT\bssoft\shell\open]
@=""
[HKEY_CLASSES_ROOT\bssoft\shell\open\command]
@="C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe http://localhost/plugin/camera/preview?id=%1 "
将文件保存为 bssoft.reg ,其中 bssoft 是自定义的名称, 文件末行的 %1 是向浏览器传递的参数。
- 将注册表进行注册,双击运行 bssoft.reg。
- 在你的业务代码中,添加访问事件
table.click('fast_login', function (btn) {
var id = $(btn).data('hostid');
window.location.href = "bssoft://"+id;
});
- 此时,在点击按钮后,浏览器会提示你是否打开 IE ,打开后 IE浏览器会自动访问配置的url地址。
总结:
为什么需要利用注册表实现?
因为ActiveXObject 对象是IE浏览器专属,并且谷歌浏览器对于NPAPI 插件在42版本后就抛弃了,以及浏览器自身的安全策略定义不允许用户通过js访问应用程序或shell脚本等。
那么,在日常开发工作中,大部分公司已经不再使用IE开发,换成谷歌或其他非IE内核浏览器时,一旦使用某个插件对于跨浏览器的不兼容性,必须通过某种方案实现浏览器之间的跳转。
这个步骤浏览器自身是不支持的,所以延伸下来,通过自定义的URL Protocol 注册表来实现。 同样的原理可参照迅雷下载链接,百度网盘下载链接。