可能重复:
Why is $.browser deprecated - and what is a better alternative?
我历史上使用jQuery中的$ .browser属性来确定浏览器。我发现它非常有用和有用。
我也有历史上最新版本的jQuery。像这样:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
好吧,显然jQuery 1.9没有,并且对此属性的支持已被删除。
有没有人知道一个好的jQuery插件可以作为替代?
我知道推荐的方法是使用$ .support,我有时会使用它。
但有时候更容易知道有人在使用什么浏览器。
有人可以帮忙吗?
答案 0 :(得分:1)
浏览器对象只是为您解析navigator.userAgent
。如果你这么倾向,你总是可以自己解析。
没有什么可以阻止你从旧的JQuery版本中提取代码然后将它放入你自己的jquery插件中。
Jquery docs建议不要使用浏览器对象,甚至声明它容易受到欺骗:
因为$ .browser使用navigator.userAgent来确定平台, 它容易受到用户的欺骗或虚假陈述的影响 浏览器本身。最好避免使用特定于浏览器的代码 尽可能完全。 $ .support属性可用 检测对特定功能的支持而不是依赖 $ .browser。
答案 1 :(得分:0)
你总是可以去消息来源。
这不是我的代码,这是改编自jQuery源代码
DEMO:http://jsfiddle.net/KKwqU/
JS:
function ExtendJqueryBrowser(){
jQuery.extend({browser:{}});
function uaMatch(ua){
ua = ua.toLowerCase();
var rwebkit = /(webkit)[ \/]([\w.]+)/,
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
rmsie = /(msie) ([\w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
var match = rwebkit.exec( ua ) || ropera.exec( ua ) || rmsie.exec( ua ) || ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || [];
return { browser: match[1] || "", version: match[2] || "0" };
}
var browserMatch = uaMatch( navigator.userAgent );
if ( browserMatch.browser ) {
jQuery.browser[ browserMatch.browser ] = true;
jQuery.browser.version = browserMatch.version;
}
// Deprecated, use jQuery.browser.webkit instead
if ( jQuery.browser.webkit ) {
jQuery.browser.safari = true;
}
}