首页 >web前端 >js教程 >修复jQuery $的5种方法未找到浏览器功能

修复jQuery $的5种方法未找到浏览器功能

Lisa Kudrow
Lisa Kudrow原创
2025-02-24 09:10:12413浏览

5 Ways to Fix jQuery $.browser function missing not found

修复jQuery $的5种方法未找到浏览器功能

钥匙要点

  • jQuery $。浏览器功能由于其易受欺骗和虚假陈述而被贬低。鼓励开发人员避免特定于浏览器的代码,而是使用功能检测来获得更可靠的结果。
  • >缺少jQuery $的五个可能的解决方案。Browser函数包括使用jQuery Migrate插件迁移jQuery,使用Modernizr进行功能检测,使用新的$ .support用于功能和错误检测,使用Javascript/Manual检测或告知用户关于不支持的函数。
  • > jQuery迁移插件可以用作恢复较新版本的jQuery的折旧功能和行为的临时解决方案。但是,建议将代码更新为不再依赖于弃用的功能以进行长期兼容性。
  • >
  • 好的,现在正式宣布$ .BROWSER功能已被贬低。我们该怎么办?不要惊慌,我在下面有5种可能的解决方案供您执行作为您的酌处权。回购中的此github消息确实说明了一切:
>

“不再维护此存储库不活跃。如果需要$。浏览器,请使用jQuery迁移插件,请直接重写代码或usenavigator.useragent。

为什么要删除$。浏览器?
>大多数开发人员开始看到错误出现时,他们在想“到底是什么,为什么$浏览器被删除了?”。好吧,让我解释一些可能的原因。因为$ ..兄弟使用navigator.useragent来确定平台,所以它很容易被用户欺骗或浏览器本身虚假陈述。总是最好避免在可能的情况下完全避免使用特定于浏览器的代码。 $ .support属性可用于检测特定功能的支持,而不是依赖$ .browser。

可用标志为:

> webkit(作为jQuery 1.4)

> safari(已弃用)
  • > Opera
  • > msie(请注意,IE8在兼容性视图中声称为7)
  • >
  • > mozilla
  • >解决方案1 ​​ - 迁移jQuery
  • >使用jQuery迁移插件将jQuery的早期版本升级到jQuery 1.9.x。这是所有荣耀中迁移$ .BROWSER代码:
>

>解决方案2 - 使用Modernizr

使用ModernIzr利用特征检测,HTML5/CSS3等…而不是基本的浏览器检测。我认为Modernizr很棒!
jQuery<span>.uaMatch = function( ua ) {
</span>        ua <span>= ua.toLowerCase();
</span>
        <span>var match = <span>/<span>(chrome)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(webkit)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(opera)(?:.*version|)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(msie) (<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                ua<span>.indexOf("compatible") < 0 && <span>/<span>(mozilla)(?:.*? rv:(<span>[w.]</span>+)|)</span>/</span>.exec( ua ) ||
</span>                <span>[];
</span>
        <span>return {
</span>                <span>browser: match[ 1 ] || "",
</span>                <span>version: match[ 2 ] || "0"
</span>        <span>};
</span><span>};
</span>
<span>// Don't clobber any existing jQuery.browser in case it's different
</span><span>if ( !jQuery.browser ) {
</span>        matched <span>= jQuery.uaMatch( navigator.userAgent );
</span>        browser <span>= {};
</span>
        <span>if ( matched.browser ) {
</span>                browser<span>[ matched.browser ] = true;
</span>                browser<span>.version = matched.version;
</span>        <span>}
</span>
        <span>// Chrome is Webkit, but Webkit is also Safari.
</span>        <span>if ( browser.chrome ) {
</span>                browser<span>.webkit = true;
</span>        <span>} else if ( browser.webkit ) {
</span>                browser<span>.safari = true;
</span>        <span>}
</span>
        jQuery<span>.browser = browser;
</span><span>}
</span>
<span>// Warn if the code tries to get jQuery.browser
</span><span>migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
</span>

>解决方案3 - 使用jquery.support

>使用新的$ .support利用功能和错误检测。 jQuery再次完成了所有艰苦的工作,并在浏览器上执行测试,并在jQuery.Support对象上存储结果(默认情况下,每个页面加载)。然后,我们可以简单查询此对象以确定是否可以使用功能。例如,要检查不透明度支持,只需做到这一点:

>
jQuery<span>.uaMatch = function( ua ) {
</span>        ua <span>= ua.toLowerCase();
</span>
        <span>var match = <span>/<span>(chrome)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(webkit)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(opera)(?:.*version|)<span>[ /]</span>(<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                <span><span>/<span>(msie) (<span>[w.]</span>+)</span>/</span>.exec( ua ) ||
</span>                ua<span>.indexOf("compatible") < 0 && <span>/<span>(mozilla)(?:.*? rv:(<span>[w.]</span>+)|)</span>/</span>.exec( ua ) ||
</span>                <span>[];
</span>
        <span>return {
</span>                <span>browser: match[ 1 ] || "",
</span>                <span>version: match[ 2 ] || "0"
</span>        <span>};
</span><span>};
</span>
<span>// Don't clobber any existing jQuery.browser in case it's different
</span><span>if ( !jQuery.browser ) {
</span>        matched <span>= jQuery.uaMatch( navigator.userAgent );
</span>        browser <span>= {};
</span>
        <span>if ( matched.browser ) {
</span>                browser<span>[ matched.browser ] = true;
</span>                browser<span>.version = matched.version;
</span>        <span>}
</span>
        <span>// Chrome is Webkit, but Webkit is also Safari.
</span>        <span>if ( browser.chrome ) {
</span>                browser<span>.webkit = true;
</span>        <span>} else if ( browser.webkit ) {
</span>                browser<span>.safari = true;
</span>        <span>}
</span>
        jQuery<span>.browser = browser;
</span><span>}
</span>
<span>// Warn if the code tries to get jQuery.browser
</span><span>migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
</span>

>解决方案4 - 使用JavaScript/手动检测

使用以下JavaScript代码段来检测浏览器和版本。 QuirksMode具有相当广泛的JavaScript浏览器/设备检测对象,可能被证明有用。

>

<span>if (jQuery.support.opacity)
</span><span>{
</span>   <span>//opacity you may do...
</span><span>}
</span>
解决方案5 - 预防/信息

只需通知用户,他们使用的jQuery版本不支持$ .BROWSER函数。可能不会推荐此解决方案,因为它无助于可用性,但可以用来阻止某些插件。我建议使用迁移插件的开发人员版本,该插件打开内容丰富的调试。

>来源:https://raw.github.com/house9/jquery-iframe-auto-height/master/master/release/jquere.iframe-auto-height.plugin.1.9.1.9.1.js 一如既往的评论,建议和改进。
   <span>/*
</span><span>        Internet Explorer sniffer code to add class to body tag for IE version.
</span><span>        Can be removed if your using something like Modernizr.
</span><span>    */
</span>    <span>var ie = (function ()
</span>    <span>{
</span>
        <span>var undef,
</span>        v <span>= 3,
</span>            div <span>= document.createElement('div'),
</span>            all <span>= div.getElementsByTagName('i');
</span>
        <span>while (
</span>        div<span>.innerHTML = '',
</span>        all<span>[0]);
</span>
        <span>//append class to body for use with browser support
</span>        <span>if (v > 4)
</span>        <span>{
</span>            <span>$('body').addClass('ie' + v);
</span>        <span>}
</span>
    <span>}());
</span>

经常询问有关jQuery浏览器函数的问题(常见问题解答)

> jQuery浏览器函数是什么,为什么不弃用?

> jQuery浏览器函数是jQuery中的功能,它提供了有关用户浏览器的信息。它用于检测用户使用的浏览器和版本。但是,此功能在JQuery版本1.3中被弃用,并在版本1.9中删除。其贬值的原因是它鼓励浏览器特定的代码,这是违反了渐进式增强和优雅退化的原则。取而代之的是,鼓励开发人员使用功能检测,这是一种更可靠,更耐心的方法。

> jQuery浏览器函数的弃用有什么影响? jQuery浏览器函数意味着它不再在较新版本的jQuery中支持。如果您使用的是1.9或更高版本的jQuery版本,则任何依赖jQuery浏览器函数的代码都无法正常工作。如果您依赖此功能,这可能会破坏您的网站或应用程序。

>

>如果遇到与jQuery浏览器函数相关的错误,我该如何修复jQuery浏览器函数错误?最好的解决方案是将代码更新到不再依赖此功能。而是使用功能检测来确定用户浏览器具有哪些功能。如果您无法更新代码,则可以使用jQuery Migrate插件,该插件还原jQuery浏览器函数。

什么是功能检测,我该如何使用它代替jQuery浏览器函数?

功能检测是Web开发中用于确定浏览器是否支持某个功能的技术。您没有检查浏览器和版本,而是检查是否有特定功能。这是一种更可靠,更适合未来的方法。您可以使用ModernIzr库进行功能检测。

>什么是jQuery Migrate插件,它如何帮助解决jQuery浏览器函数错误?

>

> jQuery Migrate插件是帮助您的工具更新您的jQuery代码以使用较新版本的jQuery。它恢复了贬低的功能和行为,因此较旧的代码仍然可以与较新版本的jQuery一起使用。如果您不能再将代码更新为不再依赖jQuery浏览器函数,则可以将jQuery迁移插件用作临时解决方案。

如何使用jQuery迁移插件来修复jQuery浏览器函数错误?

>

要使用jQuery Migrate插件,您需要将其包含在HTML文件中,包括jQuery。包含插件后,它将自动恢复jQuery浏览器函数和其他不弃用的功能。

>

是否有jQuery浏览器函数的替代方法? jQuery浏览器功能。最受欢迎的替代方案之一是功能检测,这是一种更可靠,更适合未来的方法。您可以使用ModernIzr库进行功能检测。另一种选择是使用navigator.useragent属性,尽管不建议这样做,因为它可以很容易被欺骗。

>为什么比浏览器检测更优先?

特征检测比浏览器更喜欢检测是因为它是一种更可靠,更适合未来的方法。浏览器检测依赖于用户代理字符串,可以轻松地欺骗或虚假陈述。另一方面,功能检测检查是否有特定功能,这是确定用户浏览器功能的更准确的方法。

如何更新我的代码以使用功能检测而不是jQuery浏览器函数?要更新您的代码以使用功能检测,您需要使用特定功能的检查来替换jQuery浏览器函数的任何实例。您可以使用ModernIzr库来帮助解决此问题。例如,您可以检查浏览器是否支持Internet Explorer独有的特定功能。

>如果我在jQuery中遇到其他不弃用的功能,该怎么办?

,如果您在jQuery中遇到其他折衷的功能,最好的解决方案是将代码更新到不再依赖这些功能的代码。您可以将jQuery迁移插件用作临时解决方案,但是建议更新代码以进行长期兼容性。始终检查jQuery文档以获取有关弃用功能及其替代方案的最新信息。

>

以上是修复jQuery $的5种方法未找到浏览器功能的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn