错误值X-UA-兼容元素元素属性http-equiv

Ran*_*lue 109 html validation x-ua-compatible

我使用的是与metaHTML5 Boilerplate 相同的,W3C HTML验证器抱怨:

错误值X-UA-兼容元素元素属性http-equiv.

<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
Run Code Online (Sandbox Code Playgroud)

这个meta标签有什么问题?

Que*_*tin 67

X-UA-Compatible不是"标准"HTML(FSVO"标准",涉及出现在规范引用的可公开编辑的Wiki页面上),或者Validator与该Wiki的当前状态不是最新的.

在撰写本文时(20130326),X-UA-Compatible出现在维基页面的一个部分下面,该部分声明:"以下建议的扩展程序尚未符合HTML规范中的所有注册要求,因此尚未被允许有效文档".因此验证器拒绝此值是正确的.

  • 错误的维基页面.你链接的那个是`<meta name = ...`.对于`<meta http-equiv = ...`,该页面是http://wiki.whatwg.org/wiki/PragmaExtensions (8认同)
  • 正确的wiki页面确实包含"X-UA-Compatible",因此适用"验证器不是最新"的替代方案.甚至http://validator.nu(据说一般来说更新)在这方面已经过时了. (6认同)

小智 42

如果您希望技术上有效(每个人都喜欢看绿色图标)而不影响任何功能,您应该能够将其包装在"if IE"标签中.

<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
Run Code Online (Sandbox Code Playgroud)

  • 这有效地禁用了Chrome Frame支持,因为Chrome Frame会忽略IE条件评论,请参阅http://jeffreybarke.net/2010/08/internet-explorer-8-the-x-ua-compatible-meta-element-and-conditional-评论/ (22认同)
  • @JasperMoelker:可能值得一提的是,您提供链接的文章实际上包含Chrome Frame的解决方法,这非常棒:验证+ Chrome Frame支持! (5认同)
  • 不,不,这打破了X-UA兼容.http://xn--mlform-iua.no/blog/html5-boiler-plate-prevents-x-ua-compatible (5认同)

D.A*_*der 30

一种可能的解决方案是在头文件中实现修复服务器端,正如Aaron Layton 在这篇很好的文章中所建议的那样.(所有的功劳应该归他所有,我会解释而不是抄袭......)

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
Run Code Online (Sandbox Code Playgroud)

"当Internet Explorer遇到这一行时,如果安装了插件,它将更改用于第一个Chrome Frame的引擎,然后更改为Edge(浏览器支持的最高文档模式)."

步骤:

  • 修复页面验证 - 只需删除标记即可实现
  • 渲染速度 - 我们将提前发送正确的模式作为响应头,而不是等待浏览器查看标签然后更改模式
  • 确保我们只显示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');
Run Code Online (Sandbox Code Playgroud)


或者您可以将其添加到.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>
Run Code Online (Sandbox Code Playgroud)


链接到原始文章,检查评论可能的警告.还包括C#的实现.

修复不良值X-UA兼容一劳永逸

希望这可以帮助!

  • 实施这种方法,到目前为止工作就像一个魅力. (3认同)