Как обнаружить IE7 и IE8 с помощью jQuery.support - PullRequest
25 голосов
/ 17 января 2012

Как я могу обнаружить IE 7 и IE 8, используя jQuery.support свойства?

Можно ли определять версии браузера с помощью jQuery.support или только с помощью тех функций браузера, бла-бла-бла?

Ответы [ 12 ]

41 голосов
/ 01 августа 2012

Это полностью возможно с поддержкой:

if (!$.support.leadingWhitespace) {
    //IE7 and 8 stuff
}

Это также обнаруживает IE 6, однако, если вы не хотите, чтобы IE 6 запускал этот блок кода, вам понадобится другой флаг, чтобы исключить его

Хорошая причина не использовать браузер - это устаревшая функция, которая, вероятно, будет удалена в плагин версии 1.9.(См. Комментарии к ответу на Как обнаружить IE7 с помощью jQuery? )

"Мы не рекомендуем использовать это свойство; попробуйте вместо этого использовать обнаружение функций (см. JQuery.support).jQuery.browser может быть перемещен в плагин в будущем выпуске jQuery "http://api.jquery.com/jQuery.browser/

, вот рабочий пример: http://jsfiddle.net/AGtG8/16/

8 голосов
/ 20 января 2012
if (jQuery.support.leadingWhitespace == false){

... code for IE7-IE8 ...

}
else {
... 
}
5 голосов
/ 03 января 2013

Будьте осторожны со следующим, потому что он также включает IE10:

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//<IE7
}

лучше использовать:

if ($.browser.msie && parseInt($.browser.version,10)<7) {
//<IE7
}
3 голосов
/ 08 сентября 2012

Одна хитрость, которую я нашел, заключается в добавлении условных тегов в HTML

<!--[if lt IE 7]><body class="ie ie6 lte9 lte8 lte7"><![endif]-->
<!--[if IE 7]><body class="ie ie7 lte9 lte8 lte7"><![endif]-->
<!--[if IE 8]><body class="ie ie8 lte9 lte8"><![endif]-->
<!--[if IE 9]><body class="ie ie9 lte9"><![endif]-->
<!--[if !IE]><!--><body class="not-ie"><!--<![endif]-->

Затем используйте JQuery следующим образом:

$('body.ie7')

Это также помогает для CSS в IE, специфичных для

body.ie6{ margin: 0; }

Я не знаю, хорошо ли это для вас, но в любом случае, это все еще вариант.

2 голосов
/ 17 января 2012

, как объяснено, .support для обнаружения признаков. если вы хотите обнаружить браузер, просто используйте .browser.

 var ua = $.browser;
 if ( ua.msie && ua.version.slice(0,1) == "8" ) {
   alert('IE 8');
 } else if ( ua.msie && ua.version.slice(0,1) == "7" ) {
   alert('IE 7');
 } else {
   alert('something else');
 }
2 голосов
/ 17 января 2012

jQuery.support для определения функций браузера. Для определения версии браузера используйте jQuery.browser:

if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//IE7

}

Обновление: $ .browser устарело, не используйте его.

1 голос
/ 26 марта 2013

Я заметил много разных способов сделать это, это НЕ использует $.support, хотя я обнаружил, что это работает очень хорошо. Также как примечание, jquery только что объявил, что они будут удалять любую поддержку IE 6,7,8 в jquery 2.0 (http://blog.jquery.com/2012/06/28/jquery-core-version-1-9-and-beyond/).

var msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/),
      msie = !!msVersion,
      ie6 = msie && parseFloat(msVersion[1]) < 7;

  // Help prevent flashes of unstyled content
  if (!ie6) {
    //Do Something here.
  }

Удачного кодирования!

0 голосов
/ 24 декабря 2014
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
    var ieversion = new Number(RegExp.$1);
    alert(ieversion < 9);
}
0 голосов
/ 16 октября 2013

Я добавил несколько строк Javascript, чтобы он снова заработал:

jQuery.uaMatch = function (ua) {
    ua = ua.toLowerCase();

    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
            /(webkit)[ \/]([\w.]+)/.exec(ua) ||
            /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
            /(msie) ([\w.]+)/.exec(ua) ||
            ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
            [];

    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};

if (!jQuery.browser) {
    matched = jQuery.uaMatch(navigator.userAgent);
    browser = {};

    if (matched.browser) {
        browser[ matched.browser ] = true;
        browser.version = matched.version;
    }

    // Chrome is Webkit, but Webkit is also Safari.
    if (browser.chrome) {
        browser.webkit = true;
    } else if (browser.webkit) {
        browser.safari = true;
    }

    jQuery.browser = browser;
}
0 голосов
/ 14 июня 2013

Я использую это, чтобы проверить, является ли браузер то есть 8 или меньше

, чтобы изменить то есть версию, просто обновите 8 на другую, т.е. verion

if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8 ) {   
    runIECode();
} else {
    runOther();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...