2013-04-23 67 views
2

我有一个问题涉及到HTLM5元标记和W3验证器。HTML5元标记和W3验证程序

众所周知,有几个meta标签是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对meta标签的存在一无所知,因此我们从此没有任何抱怨。

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

回答

0

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

回到问题,这不是一个真正的错误。 X-前缀表示这是供应商特定的,在这种情况下,它是针对IE(意味着以最佳版本呈现)以及针对Chrome Frame(1表示开启)。

这并非无效。

如果验证错误是窃听你这么多,那么你可以使用下面的方法来达到同样的目的,

1.设置HTTP标头PHP

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"); 

从谷歌最新的消息称,他们将停止使用谷歌Chrome Frame的起点2014年。因此,你甚至可以完全避开这段代码。