一些比较早的系统可能还需要IE8访问,因为相关插件配置等无法使用Chrome等浏览器打开,新开发的系统可能基于各种框架,不会再兼容IE8,所以有时候,部分功能需要在Chrome里点击链接,跳转到IE浏览器进行处理展示
遇到这个问题的时候,我想到了编写一个小软件,开机自启,并监听一个本地端口,浏览器点击时发送HTTP请求给软件,软件帮忙调用本地IE访问网页,但是这种方式较为繁琐,且需要自己实现,底层级语言编写开发效率低,高级别语言实现安装包又很大,搜索后找到一种修改注册表的方式,来实现这个功能
来自参考链接里的答案是这样的:
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "iexplore.exe,1"
shell
open
command
(Default) = cmd /v /k set "myvar=%1" & set myvar=!myvar:alert:=! & start "" /B "!ProgramFiles!\Internet Explorer\iexplore.exe" !myvar! & exit
看起来是修改注册表的内容,尝试按照它的结构来修改注册表
修改后,在网页可以这样使用
<a href="alert:https://www.baidu.com">open ie in chrome</a>
点击后是这样的效果
Chrome:
Firefox:
因为是手动修改的,所以我想着应该写个小工具来修改,不然人工修改注册表不仅危险而且效率低
正打算写的时候,偶然发现注册表是可以导出的...
在 alert 上右键,导出,会保存为 文件名.reg 文件,双击文件注册表,它会进行一个安全提示,点击确定即可将之前修改的内容写入注册表
感觉上比自己编写工具靠谱,因为是M$自己的导入导出,首先兼容性很好,其次自己写的程序修改注册表可能会被杀软阻止
.reg 内容:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\alert]
@="ABC 1.0系统"
"URL Protocol"="\"\""
[HKEY_CLASSES_ROOT\alert\DefaultIcon]
@="iexplore.exe,1"
[HKEY_CLASSES_ROOT\alert\shell]
[HKEY_CLASSES_ROOT\alert\shell\open]
[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="cmd /v /k set \"myvar=%1\" & set myvar=!myvar:alert:=! & start \"\" /B \"!ProgramFiles!\\Internet Explorer\\iexplore.exe\" !myvar! & exit"
最后就是如何让用户来运行这个reg了,在页面上添加一些逻辑即可,如果用户首次访问网站,提示用户“检测到IE浏览器异常,部分功能不可用,请根据提示修复”,点击后下载“修复IE跳转.reg”,安装运行后,用户点击“已运行修复”,写入个Flag到浏览器缓存,下次启动就不需要提示用户了