Как я могу обнаружить IE 7 и IE 8 с помощью jQuery.support свойств?
Можно ли обнаружить версии браузера с помощью jQuery.support или только те функции бла-бла-бла-бла-бла-бла?
Как я могу обнаружить IE 7 и IE 8 с помощью jQuery.support свойств?
Можно ли обнаружить версии браузера с помощью jQuery.support или только те функции бла-бла-бла-бла-бла-бла?
Это вполне возможно при поддержке:
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/
if (jQuery.support.leadingWhitespace == false){
... code for IE7-IE8 ...
}
else {
...
}
Будьте осторожны со следующим, потому что он также включает IE10:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//<IE7
}
лучшее использование:
if ($.browser.msie && parseInt($.browser.version,10)<7) {
//<IE7
}
Один трюк, который я нашел, заключается в том, чтобы добавить теги Conditionnal в 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; }
Я не знаю, хорошо ли это для вас, но в любом случае, это еще один вариант.
jQuery.support предназначен для обнаружения функций браузера. Чтобы определить версию браузера, используйте jQuery.browser:
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
//IE7
}
Обновление: $.browser устарел сейчас, не используйте его.
как объяснено, .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');
}
Я заметил много разных способов сделать это, это НЕ использует $.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.
}
Счастливое кодирование!
Я использую это, чтобы проверить, не является ли браузер 8 или меньше
чтобы изменить версию ie, просто обновите 8 до другого, т.е. verion
if (jQuery.browser.msie && jQuery.browser.version.substr(0,1) <= 8 ) {
runIECode();
} else {
runOther();
}
Я добавил несколько строк 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;
}
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
var ieversion = new Number(RegExp.$1);
alert(ieversion < 9);
}
Используйте jQuery.browser.version вместо поддержки
Попробуйте $. browser, это даст вам знать, если версия браузера меньше IE9
var isM = false;
$.each($.browser, function (i, val) {
if ($.browser.msie && parseInt(val) < 9) isM = true;
});