X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=resources%2Fmediawiki%2Fmediawiki.util.js;h=082f807810940eddf423459f97ddfb8200890205;hb=705c4adb63fdb2a32b644a8b89596d9d8b779689;hp=40c12cfc7272cb08b825c41a7aacd57bf1220658;hpb=d5be6194bbb76dba7c58c8ed8b95d9b60c555943;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/mediawiki/mediawiki.util.js b/resources/mediawiki/mediawiki.util.js index 40c12cfc72..082f807810 100644 --- a/resources/mediawiki/mediawiki.util.js +++ b/resources/mediawiki/mediawiki.util.js @@ -261,18 +261,29 @@ /** * Add the appropriate prefix to the accesskey shown in the tooltip. - * If the nodeList parameter is given, only those nodes are updated; - * otherwise, all the nodes that will probably have accesskeys by - * default are updated. + * + * If the `$nodes` parameter is given, only those nodes are updated; + * otherwise, depending on browser support, we update either all elements + * with accesskeys on the page or a bunch of elements which are likely to + * have them on core skins. * * @param {Array|jQuery} [$nodes] A jQuery object, or array of nodes to update. */ updateTooltipAccessKeys: function ( $nodes ) { if ( !$nodes ) { - // Rather than going into a loop of all anchor tags, limit to few elements that - // contain the relevant anchor tags. - // Input and label are rare enough that no such optimization is needed - $nodes = $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a, input, label' ); + if ( document.querySelectorAll ) { + // If we're running on a browser where we can do this efficiently, + // just find all elements that have accesskeys. We can't use jQuery's + // polyfill for the selector since looping over all elements on page + // load might be too slow. + $nodes = $( document.querySelectorAll( '[accesskey]' ) ); + } else { + // Otherwise go through some elements likely to have accesskeys rather + // than looping over all of them. Unfortunately this will not fully + // work for custom skins with different HTML structures. Input, label + // and button should be rare enough that no optimizations are needed. + $nodes = $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a, input, label, button' ); + } } else if ( !( $nodes instanceof $ ) ) { $nodes = $( $nodes ); }