开启Edge双引擎模式,如何配置Edge的IE Mode(IE模式)来运行只兼容IE的站点
一年后IE11在Windows 10多个版本上都会被停用,届时当用户尝试打开IE11会被重定向到Edge浏览器。今天这篇文章简单介绍一下如何在Edge浏览器里配置IE Mode(IE模式)来运行那些只能在IE里运行的站点,通过这个功能可以把Edge浏览器打造为既能运行最新的HTML5应用,又能运行ActiveX控件甚至VBScript的双引擎浏览器。
假设我们现在有一个站点: https:// edgedbg.com/ieonly 只支持在IE11浏览器中运行,这只是我做的一个简单的测试站点通过User-Agent来判断用户是否使用IE浏览器。
接下来我们将通过配置IE Mode来使Edge浏览器也能正常运行这个站点。
首先我们需要写一个站点列表,这个列表是一个XML文件用来指定哪些站点地址需要用什么样的浏览器模式打开,具体的schema可以参见: Enterprise Mode schema v.2 guidance (Internet Explorer 11 for IT Pros) - Internet Explorer
我开发了一个在线工具可以快速生成站点列表,工具入口地址: Online Enterprise Mode Site List Manager
打开之后就可以把需要以IE模式打开的站点地址输入进去,然后Open In指定为IE11即可,如果需要添加多个站点以IE模式打开,可以点击 Add site 按钮添加新的一行。然后点击 Save to XML 按钮进行到下一步。
点了 Save to XML 后就可以预览自己的站点列表XML文件了,点击绿色的Save XML按钮就可以把这个XML保存到本地。
有了站点列表XML文件后,我们需要部署该文件到一个地址,这个地址可以是本地文件、网络路径或者HTTP地址。对于企业大规模批量部署可能会选择网络路径或HTTP地址,对于个人用户保存到本地即可。所以这里Host the site list fine on选择为Local file,地址就用默认的 c:\temp\sitelist.xml,记得下载后把XML文件存放到 c:\temp\sitelist.xml 就行了。
得到XML地址后,我们还需要告诉Edge浏览器去哪里加载站点列表,并且开启IE Mode。这里会用到两个注册表,一个是 InternetExplorerIntegrationLevel,这个可以配置为 None (0), Internet Explorer mode (1), Internet Explorer 11 (2),None意味着对于IE站点不做特殊处理,IE Mode意味着对于IE站点使用IE Mode即在Edge窗口中以IE引擎来加载站点,Internet Explorer 11意味着对于IE站点单独打开一个IE窗口来运行。这里我们要配置双引擎的Edge,所以当然选择IE Mode了。另一个设置是InternetExplorerIntegrationSiteList,这个就是告诉Edge从哪里去加载站点列表,只有找到并成功解析站点列表后,Edge才知道哪些站点需要使用IE模式,哪些站点使用Edge模式。
我的在线工具提供了两种配置注册表的方法,一种是通过Powershell脚本,一种是通过注册表文件,这里我们就直接选择Registry,把相应的选项选好,点击Save REG绿色按钮下载注册表后双击导入即可。有兴趣的小伙伴也可尝试我写的Powershell script。当然最后一种是针对企业使用组策略来配置,我的在线工具也介绍了具体步骤,这里就不赘述了。
XML站点文件保存了,注册表也导入了,那么就一切就绪了。这时候我们重启Edge浏览器,然后可以打开内置界面:edge://compat 来查看配置是否生效。
从上面的界面看配置已经生效了,这时候我们再次访问 https:// w3lab.site/ieonly ,可以看到Edge已经能够成功访问这个站点了,从 Process Explorer 看进程结构可以看到 Edge 启动iexplore.exe 作为其子进程以实现双引擎浏览。
大致的方法就写到这里,如果越来越多的IE站点需要加到站点列表中,都可以用我写的那个小工具,有几点注意事项:
- 每次更新站点列表,需要 <site-list> 根元素的version属性值都往上升,不然Edge不会认为站点列表更新了,当然除非你手动跑去 edge://compat 点击Force update会触发强制更新。
- 更新完站点列表后,重新打开Edge可能并不会立刻生效,Edge会等大约65秒后再去检查XML文件是否有更新,同理也可以去edge://compat页面强制更新
- 一般来说不需要指定某个URL Open In MSEdge,只要不在这个列表中定义的URL都会用原生Edge模式打开,这个Open In MSEdge的选项主要为了某一种场景,即整个站点 http://contoso.com 配置为IE Mode打开,但其中有一个子站点可能需要用较新的浏览器引擎打开,这时候就可以将 http:// contoso.com/html5app 配置为Open In MSEdge
- 目前IE、Edge架构设计上有一个局限性在于,Edge和IE引擎之间的切换不能通过form post形式进行,form post行为如果牵涉到引擎切换,会导致post变更为get,post的body信息也会丢失。
- 有些老旧的站点,在配置的时候可能还需要选择恰当的Compat mode,关于Compat mode、浏览器模式、文档模式这些知识点,可以阅读我的博客: