美文网首页
扩展私有协议控制打开浏览器

扩展私有协议控制打开浏览器

作者: 河东客 | 来源:发表于2018-01-05 11:21 被阅读0次

背景

有这样一个项目:通过单点登录集成WEB类应用,通过统一入口方式实现应用的集中访问,效果见图

桌面

但因存在多开发厂商、集成项目建设时间差异等原因,出现浏览器差异化需求,如:行文办公,因使用插件需通过ActivitiX进行加载,必须使用IE;新上线的应用,因使用的框架比较新,对低版本IE不兼容,而需要使用Chrome或火狐这样的现代浏览器,林林总总。

虽说只有考虑不到的设计没有碰不到的需求,客户说要支持,只能上啊,乙方得有乙方的承担(一万个草泥马)。

解决思路

这种需要判断主机环境(只考虑面向windows用户,为什么?没有人在Linux或者MAC上用ActivitiX插件啊)是否安装浏览器还能调启浏览器的,第一想法肯定是浏览器插件,但每种浏览器都得开发插件,想想都快崩溃,有没有其他办法呢?

某度完全不知道你搜索的是什么,还得靠Google

大概两种方法:

  1. 使用JS控制打开某浏览器,再进行跳转(感觉心里没底,还得设置浏览器安全等级一堆,试了下放弃)
  2. 使用协议扩展,定制注册表,控制打开浏览器

说得有点多_ 还是show代码吧

定制注册表,保存为.reg后缀的文件并执行:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\chrome2]
"URL Protocol"="\"\""
@="\"URL:chrome2 Protocol\""

[HKEY_CURRENT_USER\Software\Classes\chrome2\DefaultIcon]
@="\"chrome.exe,1\""

[HKEY_CURRENT_USER\Software\Classes\chrome2\shell]

[HKEY_CURRENT_USER\Software\Classes\chrome2\shell\open]

[HKEY_CURRENT_USER\Software\Classes\chrome2\shell\open\command]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:chrome2:=%% & call start chrome  %%myvar%% & exit /B"

大致就是做个钩子,在使用专用协议 chrome2时 使用chrome浏览器打开,使用ie协议的链接使用IE打开,类似代码就不贴了

测试代码:

<a href="ie:http://www.baidu.com">用IE打开</a>
<br>
<a href="chrome2:http://www.baidu.com/">用chrome打开</a>

点击用IE打开(弹出框有点丑)

弹出

后续

添加判断客户端是否已安装指定浏览器,让丑陋的弹窗口不丑陋

参考资料

通过脚本检测是否安装浏览器
https://stackoverflow.com/questions/35778489/need-vbscript-to-open-url-links-in-webpages-in-chrome-browser-not-ie

使用私有协议从IE打开chrome
https://stackoverflow.com/questions/40531374/open-internet-explorer-from-chrome-using-a-protocol-handler-ieurl

相关文章

  • 扩展私有协议控制打开浏览器

    背景 有这样一个项目:通过单点登录集成WEB类应用,通过统一入口方式实现应用的集中访问,效果见图 但因存在多开发厂...

  • chrome ...LOCK File currently in

    打开chrome浏览器突然控制台报错: 这是因为某个扩展插件出了问题。 在地址栏输入: chrome://exte...

  • Docker私有仓库

    一、Docker私有仓库搭建与配置 1、拉取私有仓库镜像 2、启动私有仓库容器 3、打开浏览器输入地址http:/...

  • mac 百度云突破限速下载

    安装浏览器扩展 谷歌浏览器 打开谷歌浏览器地址输入chrome://extensions/并打开,把下载好的新版谷...

  • Swift扩展&协议&访问控制

    一、扩展 1、扩展简介: Swift中的扩展,类似于OC中的分类(Category)。 2、扩展可以为枚举、结构体...

  • 2018-05-07

    初步认识Chrome扩展与应用 区别: 扩展: 用于对浏览器功能的增强,强调与浏览器的结合。 应用: 可以不打开浏...

  • iOS之扩展和代理

    扩展 Q:我们一般用扩展做什么? A:声明私有属性,声明私有方法(没什么意义),声明私有成员变量 Q:扩展的特点 ...

  • 扩展 - 代理 - 通知

    扩展 一般扩展做什么?? 1、声明私有属性2、声明私有方法3、声明私有成员变量 扩展特点 编译时决议只以声明的形式...

  • Docker创建私有仓库以及DockerMaven插件

    Docker创建私有仓库 1、搜索registry镜像 2.拉取镜像 3.创建私有仓库容器 打开浏览器 输入地址h...

  • spydroid-ipcamera源码分析(七):Rtsp和Rt

    Rtsp协议 实时流协议(RTSP)是应用层协议,控制实时数据的传送 。RTSP提供了一个可扩展框架,使受控、按需...

网友评论

      本文标题:扩展私有协议控制打开浏览器

      本文链接:https://www.haomeiwen.com/subject/ohbjnxtx.html