2011-10-14 44 views
5

我正在尝试在我的网页上实现浏览器支持功能。对于Firefox 3.6,它工作正常,但由于某些原因,IE 8的userAgent返回了错误的值。为什么IE 8 navigator.userAgent返回MSIE 7.0?

下面是我在IE8上运行'local'javascript代码时的情景,navigator.userAgent返回正确的信息(MSIE 8.0)。但是,当我在服务器上运行此脚本时,它将在IE 8浏览器上返回MSIE 7.0。

任何想法?

+2

如果你嗅探用户代理,你这样做是错误的,你将有一堆这样的问题。你应该使用特征检测,但你也可以为ie7和ie8设置条件注释,并更改一些CSS来查看发生了什么。 – albert

+1

使用功能检测而不是浏览器嗅探会更强大,有很多库,请尝试[这个Google搜索](http://www.google.co.uk/webhp?sourceid=chrome-instant&ie=UTF -8离子= 1&北= 1个#sclient = PSY-AB&HL = EN&安全=关闭&诺德= 1&站点= webhp&源= HP&q =的JavaScript +特征+检测+文库PBX = 1&OQ = JavaScript的+特征+检测+文库水溶液= F&AQI = q-W1&AQL = 1&gs_sm = E&gs_upl = 57834l58466l1l58566l8l4l0l0l0l253l658l1.1.2l4l0&bav = on.2,or.r_gc.r_pw。,cf.osb&fp = 64c9fa8ed75e2609&ion = 1&biw = 1680&bih = 865) – Clive

+1

是您的本地网络还是互联网上的服务器?默认情况下,IE8假装为IE7 [浏览Intranet站点时](http://msdn.microsoft.com/zh-cn/library/cc288325%28v=vs.85%29.aspx)。 – robertc

回答

4

你确定你没有在IE7模式下运行吗?你可以在Developer settings(F12,我认为)的某个地方改变它。

+0

您的意思是“兼容模式”。是的,这很可能,因为在javascript中,使用道格拉斯克罗克福兹的图书馆,你可以检测到它,但在服务器上你不会有机会。 – TMS

6

你需要检查三叉戟标志了。

三叉戟标志

当F12开发工具用于更改IE浏览器,用户代理字符串的版本令牌的浏览器模式被修改,出现使浏览器似乎是一个早期版本。这样做是为了允许将浏览器特定的内容提供给Internet Explorer,并且通常只有在网站未更新以反映当前版本的浏览器时才需要。

发生这种情况时,会将三叉戟标记添加到用户代理字符串中。该令牌包含一个版本号,可让您识别浏览器的版本,而不管当前的浏览器模式如何。

更多:http://msdn.microsoft.com/en-us/library/ms537503.aspx

相关问题