Bad value X-UA-元素meta上属性http-equiv的兼容性
我使用了HTML5 Boilerplate正在使用的元素,W3C HTMLvalidation器抱怨:
Bad value X-UA-元素meta上属性http-equiv的兼容性。
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
这个meta
标签有什么问题?
X-UA-Compatible不是“标准的”HTML(FSVO“标准”,涉及出现在规范引用的公共可编辑的维基页面上 ),或者validation器没有及时更新维基的当前状态。
在撰写本文时(20130326)X-UA兼容性出现在维基页面的一个部分下,该部分指出:“以下提出的扩展不符合HTML规范中的所有注册要求,因此尚未被允许有效文档“。 所以validation者拒绝这个值是正确的。
如果您希望使其技术上有效(每个人都喜欢看到绿色图标)而不影响任何function,那么您应该可以将其包装在“if IE”标签中。
<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
一个可能的解决scheme就是在头文件中实现一个修复服务器端,就像Aaron Layton 写的那样。 (所有的功劳都应该归功于他,我会解释而不是抄袭)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
“当Internet Explorer遇到这条线路时,如果安装了插件,则会将用于第一个Chrome Frame的引擎更改为Edge(浏览器支持的最高文档模式)。
步骤 :
- 修复页面validation – 这是通过简单地删除标签来实现的
- 渲染速度 – 不用等待浏览器看到标签,然后改变模式,我们将发送正确的模式作为响应头
- 确保我们只显示Internet Explorer的修复程序 – 我们只是使用一些服务器端浏览器检测,只发送给IE
要在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#的实现。
修复不良值X-UA兼容一劳永逸
希望这可以帮助!
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
看到这篇文章可能的修复
..这可能是一个很好的答案?
用PHP设置HTTP头:
这不是我自己的工作,但我希望对别人也有用。
如果你下载/构buildvalidation器的src代码,你可以自己添加支持。
将以下内容添加到诸如html5-meta-X-UA-Compatible.rnc
)然后将其包含在html5full.rnc
。
我这样做,它很好地validation。
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
请从元标记删除,chrome=1
它将正常工作。 带validation器:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
我有同样的问题,并添加和围绕整条线纠正的情况。
<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->