Utilisateur:Seudo/doublons-accesskey.js

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
// Modifié par Seudo depuis https://nap.wikisource.org/w/index.php?title=Utente:Ruthven/De-duplicateAccessKeys.js&action=raw&ctype=text/javascript
// from https://phabricator.wikimedia.org/T336211
// Author: 	Jdlrobson
// Date: May 9 2023, 12:29 AM
var isVisible = ( node ) => node.offsetParent != null;
const activeKey = {};

function updateAccessKeys() {
    accessKeyNodes.forEach( ( node ) => {
        const key = node.dataset.accessKey;
        if ( !isVisible( node ) ) {
            // do we need to remove?
            if ( activeKey[ key ] === node ) {
                activeKey[ key ] = null;
                node.removeAttribute( 'accesskey' );
            }
        } else if ( !activeKey[ key ] ) {
            // do we need to add ?
            activeKey[ key ] = node;
            node.setAttribute( 'accesskey', key );
        }
    } );
}

const accessKeyNodes = Array.from(document.querySelectorAll( '[accesskey]') );
accessKeyNodes.forEach((node) => {
    const key = node.getAttribute( 'accesskey' );
    node.dataset.accessKey = key;
    if ( isVisible( node) && !activeKey[ key ] ) {
        activeKey[key] = node;
    } else {
        node.removeAttribute( 'accesskey' );
    }
} );

const belowDesktopMedia = window.matchMedia( '(max-width: 999px)' );
belowDesktopMedia.onchange = () => {
    updateAccessKeys();
};