jQuery浏览器检测?

有没有一种很好的方法来检测用户的浏览器是否是使用jQuery的Internet Explorer?

我有使用IE浏览器的PNG图形问题,并且只有当用户使用IE查看网站时才想将它们换成GIF。

可以使用$.browser ,是的,但使用浏览器检测是个坏主意:

 if($.browser.msie) { /* IE */ } 

例如,更好的选项是$.support ,这是特征检测,如下所示:

 if(!$.support.opacity) { /* IE 6-8 */ } 

在不支持样式opacity浏览器中, $.support.opacity为false(虽然IE 7-8处理透明的PNG文件,所以这仍然不理想,取决于你所追求的……我个人认为你’给IE 7/8用户提供次优体验)。

你应该做的是针对支持透明PNG(没有alphafilter)的IE6,如下所示:

  

是的,你可以,但他们更喜欢你使用jQuery.support

在这种情况下,请使用jQuery.support.opacity

编辑:当然,假设这是关于不透明度的。

$ .browser已在1.9中删除,因为它现在建议通过$ .support首选function检测

为了更好的浏览器检测,jQuery强烈建议使用诸如Modernizr之类的外部库,而不是依赖于jQuery.support中的属性或不推荐使用的jQuery.browser (从v1.9开始删除)

 $.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

查看$.browser函数。

要检测IE,您还可以更好地进行IE条件注释 。

例:

  
  

$ .browser.msie
对于IE

我意识到这不是一个答案 – 但我不能在评论中发布这个!

如果你打算使用javascript,这段代码修复了ie6的png问题。 我没有太多使用它,但是你需要一个名为x.gif的透明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();