Обнаружение браузера jQuery?
Есть ли хороший способ определить, является ли браузер пользователя Internet Explorer с помощью jQuery?
У меня проблема с графикой PNG с использованием IE и вы хотите поменять их на GIF только в том случае, если пользователь просматривает сайт с помощью IE.
Ответы
Ответ 1
Вы можете использовать $.browser
, но это плохая идея для использования обнаружения браузера:
if($.browser.msie) { /* IE */ }
Лучшим вариантом может быть $.support
, который является обнаружением функции, например:
if(!$.support.opacity) { /* IE 6-8 */ }
$.support.opacity
является ложным в браузерах, которые не поддерживают opacity
в стилизации (хотя IE 7-8 обрабатывает прозрачный файл PNG, поэтому это все еще не идеально, в зависимости от того, что вы после... лично Я думаю, вы бы предоставили пользователям IE 7/8 неоптимальный опыт).
То, что вы действительно должны сделать, это целевой IE6, который не поддерживает прозрачные PNG (без альфа-фильтра), например:
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="IE6ImageStyles.css">
<![endif]-->
Ответ 2
Да, вы можете, но они предпочитают использовать jQuery.support
: http://api.jquery.com/jQuery.support/.
В этом случае используйте jQuery.support.opacity
.
Изменить: предполагается, что это непрозрачность, конечно.
Ответ 3
$. браузер был удален в 1,9, поскольку теперь предлагаемое определение функции было предпочтительным через $.support
Ответ 4
Для лучшего обнаружения браузера jQuery настоятельно рекомендует использовать внешнюю библиотеку, такую как Modernizr вместо зависимости от свойств в jQuery.support или устаревшее jQuery.browser (удалено с версии v1.9)
Ответ 5
$.browser.webkit
$.browser.safari
$.browser.opera
$.browser.msie
$.browser.mozilla
if ($.browser.msie) {
//do something
}
else if ($.browser.mozilla) {
//do something else
}
работает с jQuery 1.3
Ответ 6
Проверьте $.browser
.
Чтобы обнаружить IE, вы также можете и лучше перейти на условные комментарии IE.
Пример:
<!--[if IE]>
Special instructions for IE here
<![endif]-->
Ответ 7
<script>
jQuery.each(jQuery.browser, function(i, val) {
$("<div>" + i + " : <span>" + val + "</span>")
.appendTo(document.body);
});</script>
$. browser.msie для IE
Ответ 8
Я понимаю, что это не ответ, но я не могу опубликовать это в комментарии!
Если вы собираетесь использовать javascript, этот код исправляет проблему png с помощью ie6. Я не использовал его много, но afaik вам нужен прозрачный gif-образ под названием x.gif, и он делает все остальное автоматически.
// JavaScript Document
var supersleight = function() {
var root = false;
var applyPositioning = true;
// Path to a transparent GIF image
var shim = 'x.gif';
// RegExp to match above GIF image name
var shim_pattern = /x\.gif$/i;
var fnLoadPngs = function() {
if (root) {
root = document.getElementById(root);
}else{
root = document;
}
for (var i = root.all.length - 1, obj = null; (obj = root.all[i]); i--) {
// background pngs
if (obj.currentStyle.backgroundImage.match(/\.png/i) !== null) {
bg_fnFixPng(obj);
}
// image elements
if (obj.tagName=='IMG' && obj.src.match(/\.png$/i) !== null){
el_fnFixPng(obj);
}
// apply position to 'active' elements
if (applyPositioning && (obj.tagName=='A' || obj.tagName=='INPUT') && obj.style.position === ''){
obj.style.position = 'relative';
}
}
};
var bg_fnFixPng = function(obj) {
var mode = 'scale';
var bg = obj.currentStyle.backgroundImage;
var src = bg.substring(5,bg.length-2);
if (obj.currentStyle.backgroundRepeat == 'no-repeat') {
mode = 'crop';
}
obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')";
obj.style.backgroundImage = 'url('+shim+')';
};
var el_fnFixPng = function(img) {
var src = img.src;
img.style.width = img.width + "px";
img.style.height = img.height + "px";
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
img.src = shim;
};
var addLoadEvent = function(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
};
}
};
return {
init: function() {
addLoadEvent(fnLoadPngs);
},
limitTo: function(el) {
root = el;
},
run: function() {
fnLoadPngs();
}
};
}();
// limit to part of the page ... pass an ID to limitTo:
// supersleight.limitTo('header');
supersleight.init();