在IE11中,仅仅使用兼容性视图可能无法解决所有兼容性问题。2014年4月的IE11累积更新首次引入了企业模式。起初企业模式旨在模拟IE7、IE8浏览器行为以兼容更多的老旧站点,之后的更新中企业模式允许针对某个站点指定使用特定的文档模式(5~11)。所以为了使用到功能最全面的企业模式,请先将IE11更新至最新版本:KB4018271。
允许用户从“工具”菜单启用企业模式
用户在访问某个网站时可以手动从工具菜单中启用企业模式。默认情况下,企业模式这个选项是隐藏的,只有管理员启用下面的组策略设置后才能显示。
管理模板 > Windows组件 > Internet Explorer > 允许用户从“工具”菜单启用和使用企业模式(Let users turn on and use Enterprise Mode from the Tools menu)
在这个设置中还可以指定一个URL用来收集用户开启、关闭企业模式的相关报告。比如我将此URL设为:http://em-report/report.aspx
后,每当用户从工具菜单中开启或关闭企业模式时,IE都会将用户的操作行为以POST请求形式发送到服务器。
用户访问 http://www.bing.com
时开启了企业模式,就会看到IE发出如下的请求。
POST http://em-report/report.aspx HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Host: em-report
Content-Length: 50
DNT: 1
Proxy-Connection: Keep-Alive
Pragma: no-cache
URL=http%3A%2F%2Fwww.bing.com%2F&EnterpriseMode=On
当然你需要自己部署一台Web Server用来接受上面的数据并且开发相应的程序来保存、显示日志。你也可以阅读 设置企业模式日志记录和数据收集 了解如何在IIS上以ASP收集数据以及如何使用微软发布在GitHub上的示例 EMIE-Data_Collection_Sample 收集数据。
使用站点列表
IE会记住用户手动启用了企业模式的站点,并在下次访问该站点时直接使用企业模式,但是这仅针对该用户生效。IT管理员可以使用站点列表来统一管理每个站点使用什么样的浏览模式,然后通过组策略分发给所有用户。
站点列表是一个XML文件,该文件需要通过 Enterprise Mode Site List Manager 生成。
第一步:生成站点列表文件
使用Enterprise Mode Site List Manager可以添加规则使URL以某种兼容模式打开。URL添加的注意事项:
- URL不需要指定协议,IE会自动匹配http和https。
- 最新版的Enterprise Mode中URL可以指定端口号,如:
my-site:8080
。 - URL不支持 “*”(通配符),但是指定
microsoft.com
,会等同于:\*.microsoft.com
。 - 可以添加某个域名下的多个路径以便让它们使用不同的浏览模式,如:分别为
site/app1
和site/app2
指定不同的浏览模式。
详细步骤可以看:
- 使用 Windows 10 Enterprise Mode Site List Manager 工具将站点添加到企业模式站点列表
- 使用 Windows 7 和 Windows 8.1 Enterprise Mode Site List Manager 工具将站点添加到企业模式站点列表
总共有9种浏览模式可选择,这些模式的作用、效果如下表所示。
浏览模式 | 浏览器发出的UA字串 | 默认文档模式的选择(无X-UA-Compatible) | 是否遵循X-UA-Compatible值 |
---|---|---|---|
Default Mode | Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko | 文档模式11 | 是 |
IE8 Enterprise Mode | Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) | 有DOCTYPE声明使用文档模式8,否则使用5。 | 是,但文档模式不高于8。 |
IE7 Enterprise Mode | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) | 有DOCTYPE声明使用文档模式7,否则使用5。 | 是,但文档模式不高于8。 |
IE11 Document Mode | Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko | 文档模式11 | 否 |
IE10 Document Mode | Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0) | 文档模式10 | 否 |
IE9 Document Mode | Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0) | 有DOCTYPE声明使用文档模式9,否则使用5。 | 否 |
IE8 Document Mode | Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) | 有DOCTYPE声明使用文档模式8,否则使用5。 | 否 |
IE7 Document Mode | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) | 有DOCTYPE声明使用文档模式7,否则使用5。 | 否 |
IE5 Document Mode | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) | 文档模式5 | 否 |
第二步:配置使用站点列表
生成XML文件后,我们可以启用并配置下面的组策略设置来使IE11使用指定的站点列表。
管理模板 > Windows组件 > Internet Explorer > 使用企业模式IE网站列表(Use the Enterprise Mode IE website list)
URL可以是:HTTP地址、本地网络或本地文件。
- HTTP地址:
http://test-server/em.xml
- 本地网络:
\\test-server\share\em.xml
- 本地文件:
file://c:\site\em.xml
我们也可以通过修改注册表键值在单台机器上配置使用站点列表,请参阅:打开企业模式并使用站点列表。
常见问题
为何访问站点列表中的某些站点时地址栏不显示企业模式图标?
在配置站点列表时可以选择9种模式,只有IE8 Enterprise Mode和IE7 Enterprise Mode才会在地址栏中显示企业模式图标。
如何确定站点列表正常工作?
根据上文给出的9种模式所对应的作用、效果表格,检查IE在访问站点列表中的站点时是否发出了正确的User-Agent字串以及选择了正确的文档模式。
检查以下注册表项是否被创建并且它的值是否与站点列表XML文件中的“rules”根节点的“version”属性值相同。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Enterprise Mode\CurrentVersion
如何更新站点列表?
建议使用Enterprise Mode Site List Manager来维护和更新站点列表,每次修改站点列表它会自动增加rules根节点中的version值(版本号) 。如果手动更新文件,记得每次都要修改rules根节点中的版本号。生成新的XML文件后,替换旧的文件即可。
为何IE还在使用老版本的站点列表?
当你刚更新完站点列表后,IE并不会马上使用新的站点列表。IE启动完65秒后会重新获取XML文件,如果发现服务器文件的版本号与缓存中的版本不同,则使用服务器文件并将其存储在缓存中。你可以通过查看注册表项:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Enterprise Mode\CurrentVersion
来确定当前使用XML文件的版本号。你还可以通过删除注册表项:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Enterprise Mode
并重启IE使其立刻从服务器获取当前的XML文件。
IE7 Enterprise Mode与兼容性视图的区别
- IE7 Enterprise Mode下User-Agent字串的操作系统版本一定是:
Windows NT 6.1
,Trident版本一定是:Trident/4.0
。 - 兼容性视图的User-Agent字串中的操作系统版本与Trident版本根据实际情况如实显示。
- IE7 Enterprise Mode下文档模式最高为8。即便有
X-UA-Compatible
指定了IE=edge
,文档模式依然为8。 - 兼容性视图下依然可以通过
X-UA-Compatible
来指定使用任何文档模式。
兼容性视图是否与企业模式冲突?
浏览模式 | 与兼容性视图混用效果 |
---|---|
Default Mode | 兼容性视图优先 |
IE8 Enterprise Mode | 会使用IE7 Enterprise Mode |
IE7 Enterprise Mode | IE7 Enterprise Mode优先 |
其余模式 | 兼容性视图不生效 |
为何工具菜单中的企业模式选项是禁用的(灰色的)?
如果某个URL在站点列表中可以完全匹配,并且它的域名是配置在IE7 Enterprise Mode或IE8 Enterprise Mode下的,那么用户将无法针对这个URL手动禁用或启用企业模式。简而言之管理员已经在站点列表中指定了该站点是否使用企业模式,那么用户就没有权限再更改了。
用户手动企业模式选择与站点列表会冲突吗?
IE会优先使用用户的选择,但是每当站点列表有更新时,用户的选择将被清除。