七彩课堂[网页设计教程系列]
IE8导致很多网站的兼容性问题
   今天意外发现ewebeditor以前做好的ie6、ie7、ie8兼容今天不能用了,研究了半天,无奈,
我用的是IE8,写句alert(navigator.appVersion)发现得到的结果竟然显示的是MSIE7.0,这是为什么呢?不是应该是MSIE8.0吗?看来不兼容的问题就出现在这了!下面一一介绍方法!
首先说下出现这种现象的原因!
微软的新版浏览器Internet Explorer 8在2008年上半年推出第一个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的网站。
解决方法:打开IE浏览器,然后在"命令栏"里找到"工具"->"兼容性视图设置",打开后,如果您想对所有的网站都取消这种兼容性,就把下面"在兼容性视图中显示所有网站"的勾去掉,(我是把下面的勾都去了),然后关闭后,重新打开页面就可以了,这时你会发现已经变回MSIE8.0了!
 
信息推荐
资讯中心 | 电子商务 | 搜索营销 | 设计学院 | 中医养生 | 养生保健 | 节日祝福 | 民俗文化 | 奇闻趣事
建站知识 | 人世百态 | 网站导航 | 传统节日 | 搜索热点 | 星座运势 | 趣闻轶事 | 祝福的话 | 短信大全
© 2023 QicaiSpace.Com