微軟的新版瀏覽器Internet Explorer 8將在今年上半年推出第一個Beta測試版,同時會對User-Agent String(用戶代理字符串)進行升級,網頁開發人員也必須同步更新,以便支持IE8。
每個網頁要求的HTTP Header(標頭)都會包含一個簡單的字符串,即「User-Agent」,用於讓伺服器識別用戶瀏覽器的類型和版本。IE8發布後,User-Agent會從「MSIE 7.0」改為「MSIE 8.0」,比如Windows Vista IE8用戶的User-Agent字符串就是:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
微軟的內部測試顯示,那些嚴格要求User-Agent字符串與特定瀏覽器版本必須相符的網站會無法識別IE8,因此需要移除或升級這種檢查機制。
此前5/6/7的Beta測試版都使用了不同的User-Agent,也就是在版本號後邊加上字母「b」表示這是測試版,比如Windows Vista上的IE7測試版:
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
但這導致了很多網站的兼容性問題,因為「MSIE」和後邊的分號之間通常都只是浮點數字,加上字母b之後伺服器就無法識別了。為避免這種問題再次初現,IE8測試版的User-Agent不會帶有字母b,而是和正式版保持一致。
網頁如要識別是否運行在測試版瀏覽器裡,可以使用如下代碼:
if ((null != window.navigator.appMinorVersion) &&
(window.navigator.appMinorVersion.toLowerCase().indexOf("beta")>-1))
{
window.alert("This is a beta browser.")
}
else
{
window.alert("This is NOT a beta browser.");
}
同時為了方便Beta測試用戶使用新版本,IE8會提供一個新的選現「報告IE7 User-Agent字符串」,選中的話IE8 Beta就會發送IE7的User-Agent字符串,以兼容尚未支持IE8的網站。
User-Agent字符串含義