2013-04-23 57 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年。因此,你甚至可以完全避開這段代碼。