我建立了一个基于 HTML5 Boilerplate 的网站。除了将我的自定义代码添加到 HTML 中的正文部分之外,我没有更改样板文件中的任何内容。我将 IE8 定位为要支持的最低 IE 版本。
问题是当我在 IE8 上打开我的页面时,它会自动使用“IE8 Compat View”浏览器模式和“IE7 标准”文档模式,而不是对浏览器和文档模式都使用 IE8 标准。
任何人都知道为什么会发生这种情况以及如何强制它使用正确的模式而不需要用户更改 IE8 中的选项?
我建立了一个基于 HTML5 Boilerplate 的网站。除了将我的自定义代码添加到 HTML 中的正文部分之外,我没有更改样板文件中的任何内容。我将 IE8 定位为要支持的最低 IE 版本。
问题是当我在 IE8 上打开我的页面时,它会自动使用“IE8 Compat View”浏览器模式和“IE7 标准”文档模式,而不是对浏览器和文档模式都使用 IE8 标准。
任何人都知道为什么会发生这种情况以及如何强制它使用正确的模式而不需要用户更改 IE8 中的选项?
您可能正在本地网络上测试该站点。在这种情况下,IE8 将默认使用问题中描述的模式。对于来自本地网络或 Intranet 的站点,IE8 具有不同的默认行为。
如果您正在测试的页面托管在本地网络之外,那么 IE8 将使用正确的标准模式。
如果需要在本地测试网站,只需使用 IE8 的开发者工具切换到 IE8 标准浏览器模式即可。
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
使用上述元标记强制 IE 使用它可用的最新渲染引擎。
chocobanana 描述的行为也在此处进行了描述,请参阅条目“IE9 兼容性视图和 Intranet 站点”。
如果您不想一直在开发人员工具中手动切换浏览器/文档模式,也不想包含 X-UA-Compatible-Tag,您可以通过取消选中相应的选项来撤消始终以兼容模式呈现 Intranet 站点的默认设置工具 > 兼容性视图设置中的复选框。
我花了将近一天的时间才弄清楚为什么我的本地版本在一个 IE8 选项卡中看起来不错,而另一个选项卡中同一页面的 Intranet 服务器版本在布局方面都搞砸了……*叹气*
无论如何,这仅适用于您的机器,因此为了强制您的客户端不进入兼容模式,您必须设置相应的元标记。
请检查以下事项:
1)使用“查看源代码”,确保您正在使用
<!DOCTYPE html>
在您的页面顶部。
2) 如果该行出现在顶部,请确保该行之前没有空格或换行符。发生在我身上的是,一些 PHP 在 ?> 之后有一个额外的新行,它被打印到屏幕上,并导致 doctype 不作为文档中的第一件事出现。