$.browser 的替代品是啥
Posted
技术标签:
【中文标题】$.browser 的替代品是啥【英文标题】:What's the replacement for $.browser$.browser 的替代品是什么 【发布时间】:2012-03-27 14:20:03 【问题描述】:jQuery 文档将 $.browser
标记为已弃用。那么它的替代品是什么?
【问题讨论】:
不是真正的jQuery
方法 - 但 css hacks 可能对您有用。
您应该避免在帖子中添加更多问题。您已经收到了许多原始问题的答案。
谢谢,我会开一个新问题
【参考方案1】:
基于jQuery migration plugin,我找到了这个。
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 )
var
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;
【讨论】:
谢谢。一些特征被证明是难以检测的。 (比如支持css属性的各种取值) 虽然主要答案是正确的,但如果您在一个具有依赖于$.browser
的遗留代码的网站上工作,不幸的是,这个答案是要走的路,直到可以删除旧代码.
感谢您实际回答问题。
是的,这绝对可以作为旧插件的补丁。 (并回答问题)
这在某种程度上是有帮助的,而上面引用的 jquery 文档却没有。【参考方案2】:
如果你真的需要好的旧的 $.browser
根据docs,此功能在1.3中已弃用, 并在 1.9 中完全删除,尽管它在 official jQuery Migrate plugin 中仍然可用。
如果你想做正确的事
取决于browser detection 是not a good idea。特征检测是要走的路(Modernizr 是一个很好的工具)。 jQuery 有一个 $.support()
方法来提供一些特征检测,但它现在也被弃用了。 They also suggest using Modernizer.
如果你真的需要浏览器检测
修复浏览器怪癖不是浏览器检测的有效用例,但还有其他用例。使用任何 javascript 浏览器检测工具(如 bowser),因为此功能根本不依赖 jQuery。
【讨论】:
Modernizr 是一个很棒的 CSS3/html5 特征检测工具。 你错了@bažmegakapa,存在浏览器漏洞,比如window.onload event doesn't fire in chrome
,所以我们需要通过浏览器检测来弥补这些漏洞。
没错,@bažmegakapa,我只是说不要在编程中说永远。 ***.com/questions/7493293/…
我正在构建一个用于报告错误的应用程序,它收集有关用户浏览器/设备的数据。所以想要这个功能是完全合理的。设备检测并不邪恶,只是你为什么使用它的问题。感谢@takien 的快速回答。
@kapa 人们仍然被困在完全更新旧代码 $.browser 并在几年后提出这个问题。您的回答提供了文档中提供的一些信息,而不是当您的代码库被冻结在琥珀中时解决真正问题的方法【参考方案3】:
没有直接替代品。您应该使用特征检测而不是浏览器检测(您有充分的理由需要了解浏览器吗?),因此您可以使用$.support
property。 (它在$.browser
的 API 文档中说了这么多。)
【讨论】:
Jquery 警告不要使用 $.support:“代表不同浏览器功能或错误存在的属性集合。供 jQuery 内部使用;当内部不再需要特定属性时,可能会删除它们以提高页面启动性能。对于您自己的项目的特征检测需求,我们强烈建议使用诸如 Modernizr 之类的外部库,而不是依赖 jQuery.support 中的属性。"【参考方案4】:jQuery.support
【讨论】:
【参考方案5】:您可以使用 javascript 中的导航器变量
console.log(navigator)
但如果您想检查与 jquery 功能的兼容性,您可以使用 support var 之类的
$.support.ajax
【讨论】:
【参考方案6】:jquery-browser-plugin 是一个很好的替代品
【讨论】:
以上是关于$.browser 的替代品是啥的主要内容,如果未能解决你的问题,请参考以下文章