jQuery обнаруживает браузер IE9 и ниже и бросает модальный для обновления
Я хочу иметь возможность обнаруживать IE9 или меньше с помощью jQuery (или если есть лучший метод?). Если версия браузера IE9 или меньше, я хочу загрузить модальный с возможностью обновления до Chrome, FF и т. д.
Я читал, что $.браузер больше не работает, поэтому просто интересно, какой лучший способ достичь того, что я хочу:
$(document).ready(function(){
/* Get browser */
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
/* Detect Chrome */
if($.browser.chrome){
/* Do something for Chrome at this point */
alert("You are using Chrome!");
/* Finally, if it is Chrome then jQuery thinks it's
Safari so we have to tell it isn't */
$.browser.safari = false;
}
/* Detect Safari */
if($.browser.safari){
/* Do something for Safari */
alert("You are using Safari!");
}
});
5 ответов
Не используйте jQuery для обнаружения версий IE. Вместо этого используйте условные комментарии.
почему? Хорошо подумайте о том, почему вы хотите нацелиться на эти старые версии в первую очередь. Вероятно, потому, что они не поддерживают определенные функции JS/CSS, которые вам нужны. Итак, вы действительно хотите поддерживать свой собственный код JS, который вы уверены, будет работать в этих старых версиях? Если вы идете по этому маршруту, вам нужно начать думать о том, будет ли код обнаружения, который вы пишете, работать в IE6 или 5 или 4... больно!
вместо этого попробуйте следующее:
- добавьте свой модальный / баннерный элемент в свой HTML.
- в главном файле css скройте этот элемент с помощью display: none. Это гарантирует, что последние версии IE и не IE браузеров не будет видеть его.
- создайте IE только css или JS-файл, который покажет этот элемент.
- включите этот файл в условные комментарии, предназначенные для версий IE, которые вы хотите.
в пример ниже использует простое раскрытие с помощью CSS, но вы можете легко заменить его на JS, если хотите. Просто не делайте его слишком сложным, или он может легко сломаться в ранних версиях IE.
#index.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css">
<!--[if lte IE 9]>
<link rel="stylesheet" type="text/css" href="ie-only.css">
<![endif]-->
</head>
<body>
<div class="ie-only">Go upgrade your browser!</div>
</body>
</html>
#main.css
.ie-only { display: none }
#ie-only.css
.ie-only { display: block }
вот полезный условные комментарии ссылка.
var browser = {
isIe: function () {
return navigator.appVersion.indexOf("MSIE") != -1;
},
navigator: navigator.appVersion,
getVersion: 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.isIe() && browser.getVersion() <= 9) {
console.log("You are currently using Internet Explorer" + browser.getVersion() + " or are viewing the site in Compatibility View, please upgrade for a better user experience.")
}
var isIE9OrBelow = function()
{
return /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split("MSIE")[1]) < 10;
}
$.browser () удалить в jQuery версии 1.9 используйте код ниже в своем скрипте,
(function($) {
var matched, browser;
// Use of jQuery.browser is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
// jQuery.uaMatch maintained for back-compat
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"
};
};
// Don't clobber any existing jQuery.browser in case it's different
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;
}
})(jQuery);
отрегулировать от Sitepoint:
if(navigator.appVersion.indexOf("MSIE 9.") !== -1)