Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is jQuery $.browser Deprecated?

Tags:

browser

jquery

Can someone tell me if I am correct in believing that jQuery's $.browser is/has been deprecated?

Will my existing implementations continue to work? If not, is there an easy to implement alternative.

like image 554
Mark_54 Avatar asked Mar 09 '12 17:03

Mark_54


People also ask

Is jQuery deprecated?

The team announced that the cross-platform jQuery Mobile project under its umbrella will be fully deprecated as of October 7, 2021. New technologies for mobile app development have evolved since this project was launched in 2010, so we're encouraging developers to plan for this jQuery Mobile transition.

Is jQuery browser compatibility?

Cross-browser compatibility — jQuery supports older browsers which do not do well with modern tools, frameworks or libraries. jQuery-powered applications work well on all browsers.

Does jQuery work on Internet Explorer?

jQuery is only supported in Internet Explorer 9+, so if you're in an older version, you're out of luck perhaps, with a newer version. BUT... taken from the jQuery site... If you need to support older browsers like Internet Explorer 6-8, Opera 12.1x or Safari 5.1+, use jQuery 1.12.

What happened to $browser in jQuery?

The $.browser property is deprecated in jQuery 1.3, and its functionality may be moved to a team-supported plugin in a future release of jQuery. Because $.browser uses navigator.userAgent to determine the platform, it is vulnerable to spoofing by the user or misrepresentation by the browser itself.

Can I use jQuery $browser in my project?

The answer is yes, but not without a little work. $.browser is an official plugin which was included in older versions of jQuery, so like any plugin you can simple copy it and incorporate it into your project or you can simply add it to the end of any jQuery release. I have extracted the code for you incase you wish to use it.

Is it safe to use $ (document) ready () in jQuery?

This property is available immediately. It is therefore safe to use it to determine whether or not to call $ (document).ready () . The $.browser property is deprecated in jQuery 1.3, and its functionality may be moved to a team-supported plugin in a future release of jQuery.

What happens when you don’t update jQuery?

The failure to periodically audit and update means your software is not keeping up and will eventually break and of course lose to competition that is staying current. Which Version of jQuery to Use? The obvious answer is the latest, 3.4.1 at the time of this writing.


2 Answers

Second Question

Will my existing implementations continue to work? If not, is there an easy to implement alternative.

The answer is yes, but not without a little work.

$.browser is an official plugin which was included in older versions of jQuery, so like any plugin you can simple copy it and incorporate it into your project or you can simply add it to the end of any jQuery release.

I have extracted the code for you incase you wish to use it.


// Limit scope pollution from any deprecated API (function() {      var matched, browser;  // Use of jQuery.browser is frowned upon. // More details: http://api.jquery.com/jQuery.browser // jQuery.uaMatch maintained for back-compat     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"         };     };      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;      jQuery.sub = function() {         function jQuerySub( selector, context ) {             return new jQuerySub.fn.init( selector, context );         }         jQuery.extend( true, jQuerySub, this );         jQuerySub.superclass = this;         jQuerySub.fn = jQuerySub.prototype = this();         jQuerySub.fn.constructor = jQuerySub;         jQuerySub.sub = this.sub;         jQuerySub.fn.init = function init( selector, context ) {             if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {                 context = jQuerySub( context );             }              return jQuery.fn.init.call( this, selector, context, rootjQuerySub );         };         jQuerySub.fn.init.prototype = jQuerySub.fn;         var rootjQuerySub = jQuerySub(document);         return jQuerySub;     };  })(); 

If you're asking why anyone would need a depreciated plugin, I have prepared the following answer.

First and foremost the answer is compatibility. Since jQuery is plugin based, some developers opted to use $.browser and with the latest releases of jQuery which doesn't include $.browser all those plugins where rendered useless.

jQuery did release a migration plugin, which was created for developers to detect whether their plugin's used any depreciated dependencies such as $.browser.

Although this helped developers patch their plugin's. jQuery dropped $.browser completely so the above fix is probably the only solution until your developers patch or incorporate the above.

About: jQuery.browser

like image 187
EminezArtus Avatar answered Sep 23 '22 06:09

EminezArtus


From the documentation:

The $.browser property is deprecated in jQuery 1.3, and its functionality may be moved to a team-supported plugin in a future release of jQuery.

So, yes, it is deprecated, but your existing implementations will continue to work. If the functionality is removed, it will likely be easily accessible using a plugin.

As to whether there is an alternative... The answer is "yes, probably". It is far, far better to do feature detection using $.support rather than browser detection: detect the actual feature you need, not the browser that provides it. Most important features that vary from browser to browser are detected with that.


Update 16 February 2013: In jQuery 1.9, this feature was removed (docs). It is far better not to use it. If you really, really must use its functionality, you can restore it with the jQuery Migrate plugin.

like image 28
lonesomeday Avatar answered Sep 23 '22 06:09

lonesomeday