Thanks a lot for the notification, and for doing it on wikitech-ambassadors.

It's used in a bunch of gadgets in he.wikipedia. We'll fix it.

--
Amir

2012/11/7 Krinkle <krinklem...@gmail.com>
>
> Hey all,
>
> Just a reminder that jQuery will (after almost 4 years of deprecation!)
> drop
> $.browser [1] in jQuery 1.9.
>
> Please check your scripts and make sure you are are no longer using
> "$.browser"
> (or "jQuery.browser"). After jQuery 1.9 is released, from the next
> MediaWiki
> deployment after that $.browser will be undefined and old code trying to
> access
> a property of it will throw a TypeError for accessing a property of
> undefined.
>
> Don't be alarmed, this has been a long time coming. It's been almost 4
> years,
> and by the time this is deployed it will probably have been 4 years.
>
> For those who just realised their script is still using it, or if you read
> this
> later to fix someone else's script that just broke (hello future, did the
> world
> end in 2012?), I'll briefly describe two migration paths you can take from
> here:
>
> == Feature detection
>
> In most (if not all) cases of people using $.browser it is because they
> want
> different behaviour for browsers that don't support a certain something.
> Please
> take a minute to look at the code and find out what it is you are
> special-casing
> for that apparently doesn't work in a certain browser.
>
> Research on the internet and look for a way to detect this properly
> (examples
> below). Browser detection (instead of feature detection) is not reliable,
> nor is
> it very effective. For example, Internet Explorer has changed a lot since
> IE6.
> Blindly doing A for IE and B for non-IE isn't very useful anymore as most
> (if
> not all) of the new features will work fine in IE8, IE9 or IE10.
>
> The opposite is also true. If you do something cool for Chrome, you're
> missing
> other WebKit-based browsers that should get the same awesomeness (Safari,
> Chromium, iPhone/iPod/iPad, possibly Android, Flock, etc.) these all share
> the
> exact same engine that backs Chrome). And what if Firefox and IE also
> start to
> support this new awesome feature?
>
> There are many ways to do feature detection. jQuery comes with various
> detectors
> built-in in the object "jQuery.support"[2]. This contains for example
> "support.ajax",
> "support.opacity" and many more[2]. You can also easily make your
> own feature detector:
>
> * var supportPlaceholder = 'placeholder ' in
> document.createElement('input');
> * var supportJSON = !!window.JSON;
> etc.
>
> If you need any help with feature detection, I'd recommend asking in one
> of the following channels on irc.freenode.net:
>
> * ##javascript (recommended)
> * #jquery
> * #wikimedia-dev
>
> == jQuery.client [3]
>
> If you can't figure out how to detect what you really want to switch for,
> there
> is an elaborate plugin in MediaWiki that does the same thing that
> jQuery.browser
> used to do (and more). This can be used as an alternative migration path.
> To
> give an impression:
>
> > jQuery.browser
> < {
>     chrome:  true,
>     version:  "22.0.1229.94",
>     webkit:  true
> }
>
> > $.client.profile();
> < {
>     name:  "chrome",
>     layout:  "webkit",
>     layoutVersion:  537,
>     platform:  "mac",
>     version:  "22.0.1229.94",
>     versionBase:  "22",
>     versionNumber:  22
> }
>
> For example:
>
> if ( $.browser.chrome ) {}
>
> Would become:
>
> ++ dependency: jquery.client
> var profile = $.client.profile();
>
> if ( profile.name === 'chrome ) {}
>
> But:
>
> if ( $.browser.msie ) {
>   // IE doesn't support opacity
>   el.style.filter = 'alpha(opacity=50)';
> } else { .. }
>
> Should become:
>
> if ( $.support.opacity ) {
>   el.style.filter = 'alpha(opacity=50)';
> } else { .. }
>
> Or better yet, since this is supported by jQuery core for a while now,
> like
> this:
>
>  $(el).css('opacity', 0.5);
>
> Which will do the right thing for newer browsers and old IE respectively.
>
> -- Krinkle
>
>
> [1] http://api.jquery.com/jQuery.browser/
> [2] http://api.jquery.com/jQuery.support/
> [3] https://www.mediawiki.org/wiki/RL/DM#jQuery.client
>
>
> _______________________________________________
> Wikitech-ambassadors mailing list
> Wikitech-ambassadors@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-ambassadors

_______________________________________________
Wikitech-ambassadors mailing list
Wikitech-ambassadors@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-ambassadors

Reply via email to