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();
};