1

我有一个与 HTLM5 元标记和 W3 Validator 相关的问题。

众所周知,Validator 似乎不喜欢几个元标记。比如这个:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

到目前为止,我已经使用了这个技巧:

var meta_elem = document.createElement('meta');
meta_elem.setAttribute('http-equiv', 'X-UA-Compatible');
meta_elem.setAttribute('content', 'IE=edge,chrome=1');
document.getElementsByTagName('head')[0].appendChild(meta_elem);

现在它似乎达到了它的目的。W3 Validator 对元标记的存在一无所知,因此我们不会收到任何抱怨。

但是我仍然有些疑问,所以我的问题来了:这实际上是解决该问题的正确方法吗?有没有更好的办法?

4

1 回答 1

0

首先,您不应该根据 W3C 验证器做出决定。它永远不会给你完整的画面。它应该只用于跟踪语法错误(即 linting)。

谈到这个问题,这并不是一个真正的错误。X- 前缀表示这是特定于供应商的,在这种情况下,它用于 IE(表示以最佳版本呈现)和 Chrome Frame(1 表示打开)。

这不是无效的。

如果验证错误非常困扰您,那么您可以使用以下技术来达到相同的目的,

1.用PHP设置HTTP头

header('X-UA-Compatible: IE=edge,chrome=1');

2. 使用 .htaccess 文件

Header set X-UA-Compatible "IE=Edge,chrome=1"

3. 使用 IIS web.config

<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=Edge,chrome=1" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

4. 使用 C#

Response.AppendHeader("X-UA-Compatible", "IE=edge,chrome=1");

来自 Google 的最新消息称,他们将从 2014 年开始停止使用 Google Chrome Frame。因此,您甚至可以完全摆脱这段代码。

于 2013-06-15T13:37:46.760 回答