【问题标题】:Jquery check if browser is IEjquery判断浏览器是否为IE
【发布时间】:2013-02-09 23:39:30
【问题描述】:

如何检查用户浏览器是否为 IE?我这里有这段代码,但它不起作用。

if($.browser.msie && $.browser.version <= 9)
{
    alert('You Are Using An Outdated Browser! Switch To Chrome Or FireFox.');   
}

【问题讨论】:

  • 如果您坚持浏览器检测,IE 条件 cmets 已经存在用于此目的
  • MSIE 是浏览器品牌,而不是浏览器版本。显示一条声明它“已过时”的消息是荒谬的。
  • 那么,如果我使用的是 IE10,我使用的是过时的浏览器?
  • @MoussaHarajli FormData 从 IE 10 开始支持!
  • @MoussaHarajli - 那么您应该测试的是 FormData 功能,而不是 IE。

标签: javascript jquery html css internet-explorer


【解决方案1】:

browser 在 1.9 中被移除。:

描述:包含用户代理的标志,从 navigator.userAgent 读取。我们建议不要使用此属性;请尝试改用特征检测(参见 jQuery.support)。 jQuery.browser 可能会在 jQuery 的未来版本中移动到插件中。

【讨论】:

  • 因此可以对 FormData 使用此检查:var canFormData = (typeof FormData !== 'undefined');。还有Modernizr等特征检测库。
【解决方案2】:

试试 James Padolsey 的 this solution

// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
//     ie === undefined
// If you're in IE (>5) then you can determine which version:
//     ie === 7; // IE7
// Thus, to detect IE:
//     if (ie) {}
// And to detect the version:
//     ie === 6 // IE6
//     ie> 7 // IE8, IE9 ...
//     ie <9 // Anything less than IE9
// ----------------------------------------------------------
var ie = (function(){
    var undef, v = 3, div = document.createElement('div');

    while (
        div.innerHTML = '<!--[if gt IE '+(++v)+']><i></i><![endif]-->',
        div.getElementsByTagName('i')[0]
    );

    return v> 4 ? v : undef;
}());

cmets 中还有其他有趣的解决方案。

【讨论】:

【解决方案3】:

测试功能,而不是浏览器。如果您使用并需要您在 cmets 中声明的 FormData,请将您的检查更改为:

if ( !("FormData" in window) ) {
   // Tell the user to use a better browser, or whatever
}

【讨论】:

  • 这是测试浏览器是否能够满足您的需求的最准确方法。你永远不知道 NewBrowserX 什么时候会出现,它可能支持也可能不支持你需要的功能。这将帮助您避免误报。
  • 浏览器检测有时很有用。例如,window.onhashchange 存在但不会在 IE 7 和 9 上触发。
【解决方案4】:

MS推荐的方式怎么样: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

(当然 UserAgent 可以被欺骗......但是,如果有人欺骗他们的 UserAgent,您真的关心他们在您的网站上看到的内容吗?)

 function getInternetExplorerVersion()
 // Returns the version of Internet Explorer or a -1
 // (indicating the use of another browser).
 {
    var rv = -1; // Return value assumes failure.

    if (navigator.appName == 'Microsoft Internet Explorer')
    {
        var ua = navigator.userAgent;
        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");

        if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 );
    }
    return rv;
}

【讨论】:

    【解决方案5】:

    只是一个提醒(即使没有直接回答问题);用户特征检测as opposed总是比浏览器检测好。

    这就是 Modernizr 存在的原因;

    为什么要使用Modernizr

    利用很酷的新网络技术非常有趣,除非您必须支持落后的浏览器。 Modernizr 使您可以轻松编写条件 JavaScript 和 CSS 来处理每种情况,无论浏览器是否支持某个功能。它非常适合轻松进行渐进增强。

    所以你会像这样使用它;

    Modernizr.canvas ? showGraph() : showTable();

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 2012-06-25
      • 2012-03-05
      • 2011-06-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      相关资源
      最近更新 更多