IE 11浏览器将自己视为Mozilla

时间:2014-01-03 19:21:56

标签: javascript jquery asp.net-mvc mozilla internet-explorer-11

我正在研究MVC应用程序,.net 4.5框架,VS 2010。 我有一段Javascript代码,用于标识应用程序正在运行的浏览器。如果浏览器是Firefox,那么如果不执行另一个块代码,则将执行特定的代码块。   使用IE 11,我遇到了一个奇怪的问题。   浏览器(即11)将自己视为Mozilla。

javascrip代码:

 if ($.browser.mozilla) {
      if (location.pathname == "/Stats/Reports") {            // This is for local env.
      $("#prntCss").attr("href", "../../../Content/SitePrint_FF.css");
            }
            else {                                                 
      $("#prntCss").attr("href", "../../Content/SitePrint_FF.css");
      $("#rptPrntCss").attr("href", "../../Content/reportPrintStyles_FF.css");
            }

enter image description here

4 个答案:

答案 0 :(得分:21)

是。 IE 11不再说它是IE了,它说它是Mozilla。

Althoug,所有IE版本都在其所有版本中回复 Trident (其布局引擎)这个词。

所以这样的东西可以在你的javascript中运行

<script type="text/javascript">
    CheckIE();
    function CheckIE()
    {
    var Browser;
    Browser = navigator.userAgent;
    if (Browser.indexOf("Trident") == -1)
    {
        //WHATHEVER YOU WANT IF IT IS NOT INTERNET EXPLORER
    }
    }
</script>

答案 1 :(得分:3)

是的,does

  

兼容(“兼容”)和浏览器(“MSIE”)令牌   除去。

     

...

     

这些更改有助于防止IE11(错误地)   被确定为早期版本。

仍有一些方法可以检测到它(搜索“如何检测ie11”),但最好的办法是删除浏览器检测代码。

答案 2 :(得分:2)

这是因为IE 11具有与先前版本的IE

不同的用户代理字符串样式

http://msdn.microsoft.com/library/ms537503.aspx

User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

答案 3 :(得分:2)

看一下IE 11的用户代理字符串: http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx

现在说:

  

Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0),如Gecko

更多细节:http://www.nczonline.net/blog/2013/07/02/internet-explorer-11-dont-call-me-ie/

我认为这就是原因。