Discuz教程网

解决:IE8.0浏览器的User-Agent显示MSIE7.0

[复制链接]
authicon dly 发表于 2012-11-6 16:11:12 | 显示全部楼层 |阅读模式
今天意外发现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测试版:
  1. Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)
复制代码
但这导致了很多网站的兼容性问题,因为“MSIE”和后边的分号之间通常都只是浮点数字,加上字母b之后服务器就无法识别了。为避免这种问题再次初现,IE8测试版的User-Agent不会带有字母b,而是和正式版保持一致。

网页如要识别是否运行在测试版浏览器里,可以使用如下代码:
  1. if ((null != window.navigator.appMinorVersion) &&
  2. (window.navigator.appMinorVersion.toLowerCase().indexOf("beta")>-1))
  3. {
  4. window.alert("This is a beta browser.")
  5. }
  6. else
  7. {
  8. window.alert("This is NOT a beta browser.");
  9. }
复制代码
同时为了方便Beta测试用户使用新版本,IE8会提供一个新的选现“报告IE7 User-Agent字符串”,选中的话IE8 Beta就会发送IE7的User-Agent字符串,以兼容尚未支持IE8的网站。


解决方法:打开IE浏览器,然后在"命令栏"里找到"工具"->"兼容性视图设置",打开后,如果您想对所有的网站都取消这种兼容性,就把下面"在兼容性视图中显示所有网站"的勾去掉,(我是把下面的勾都去了),然后关闭后,重新打开页面就可以了,这时你会发现已经变回MSIE8.0了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:Discuz X2.5公共信息最新回帖处,点击右面最新回帖的会员名称时,页面找不到。
下一篇:Discuz X2.5 希望这个360的模板能支持宽屏方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-1 23:46

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表