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]-->