我使用了与meta
HTML5 Boilerplate 相同的东西,W3C HTML 验证器抱怨:
元素元上属性 http-equiv 的错误值 X-UA-Compatible。
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
这个meta
标签有什么问题?
我使用了与meta
HTML5 Boilerplate 相同的东西,W3C HTML 验证器抱怨:
元素元上属性 http-equiv 的错误值 X-UA-Compatible。
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
这个meta
标签有什么问题?
X-UA-Compatible 不是“标准”HTML(FSVO“标准”涉及出现在规范引用的可公开编辑的 wiki 页面上)或者验证器不是最新的该 wiki 的当前状态。
在撰写本文时 (20130326) X-UA-Compatible 出现在 wiki 页面上的一个部分下:“以下提议的扩展尚未符合 HTML 规范中的所有注册要求,因此尚未允许有效文件。” 所以验证者拒绝这个值是正确的。
如果您希望使其在技术上有效(每个人都喜欢看到绿色图标)而不影响任何功能,您应该能够将其包装在“if IE”标签中。
<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
一种可能的解决方案是在标头中实现修复服务器端,正如Aaron Layton的这篇精彩文章中所建议的那样。(所有的功劳都应该归功于他,我会转述而不是抄袭......)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
“当 Internet Explorer 遇到这条线时,它会将正在使用的引擎更改为第一个 Chrome Frame(如果安装了插件),然后更改为 Edge(浏览器支持的最高文档模式)。”
步骤:
要在 PHP 中添加标题,我们只需将其添加到我们的页面:
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
header('X-UA-Compatible: IE=edge,chrome=1');
或者您可以将其添加到您的 .htaccess 文件中,如下所示:
<FilesMatch "\.(htm|html|php)$">
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</FilesMatch>
链接到原始文章,查看评论以了解可能的警告。还包括 C# 的实现。
希望这可以帮助!
..这可能是一个很好的答案吗?
使用 PHP 设置 HTTP 标头:
这不是我自己的工作,但我希望它对其他人也有用。
如果您下载/构建验证器 src 代码,您可以自己添加支持。
将以下内容添加到文件中,例如html5-meta-X-UA-Compatible.rnc
) 然后将其包含在html5full.rnc
.
我这样做了,它很好地用于验证。
meta.http-equiv.X-UA-Compatible.elem =
element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs }
meta.http-equiv.X-UA-Compatible.attrs =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.X-UA-Compatible
& meta.http-equiv.attrs.content.X-UA-Compatible
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.X-UA-Compatible = attribute http-equiv {
xsd:string {
pattern = "X-UA-Compatible"
}
}
meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
xsd:string {
pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?"
}
}
common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
请,chrome=1
从元标记中删除它会正常工作。使用验证器:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
我遇到了同样的问题,添加并围绕整条线纠正了这种情况。
<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->