在 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 会优先使用用户的选择,但是每当站点列表有更新时,用户的选择将被清除。