2013-06-03 10 views
1

我试图发现IE 7或6和重定向使用JavaScript的用户错误页面波纹管IE8的JavaScript

var Browser = { 
     Version: function() { 
      var version = 999; // we assume a sane browser 
      if (navigator.appVersion.indexOf("MSIE") != -1) 
      // bah, IE again, lets downgrade version number 
       version = parseFloat(navigator.appVersion.split("MSIE")[1]); 
      return version; 
     } 
    } 

    if (Browser.Version() == 7 || Browser.Version() == 6) { 

     if (window.location.href != "/browser_problem") { 
      window.location.href = "/browser_problem"; 
     } 
    } 

我得到了一些反馈,该版本的IE 8.0.7601.17514是将用户重定向到错误页面 就像他们在即7或6.

任何想法可能是什么问题?

+5

使用条件注释。 – SLaks

+7

不管怎样都不要使用浏览器检测。使用功能检测来检查故障。 – Bergi

+0

请检查这个[SO回答](http://stackoverflow.com/a/13287226/1169519)。 – Teemu

回答

2

我假设你有这个解决方案from here

如果您仔细阅读了您正在使用的代码块的注释(在上面的链接中),您会看到其他人遇到了同样的问题。

代码本身很健全(尽管你会发现一些不觉得浏览器以这种方式嗅探的人是很好的做法)。

原因Internet Explorer 8中被逮住,并被重定向可以是:

  • 用户都有自己的IE7兼容模式浏览器(这是可能从工具菜单,或在地址栏的小浏览器图标 - IE8的目标是智能化,可以自动检测并切换到IE7模式,这通常是由无效的标记引起的)。
  • 该网站本身强制其浏览器使用X-UA-Compatible或类似的IE7模式。

要得到你的问题的底部,获得IE8的副本保持并尝试自己出来(你可以使用BrowserStack - 一个很好的浏览器资源,跨浏览器测试),如果你可以使用IE8复制它,请确保您在工具菜单中不处于IE7模式。

看看你的页面上的HTML标记,并确保你没有一个X-UA-Compatible元标记,看起来像这样的头:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

这可能是更改为:

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
+1

很可能他在一个内部网站上强制IE进入compat模式。你应该使用IE = Edge。 – Christoph

+0

那些没有文档类型声明的'meta'在页面初始化时没有影响。 – Teemu

+0

谢谢@Christoph,你绝对正确。更新的问题可以增加更多的清晰度。 – johnkavanagh