Utente:Ruthven/De-duplicateAccessKeys.js

Notarella: Aroppo pubbreca putisse necessità 'e pulezzà 'a caché d' 'o navigatóre pe vedé 'e cagnamienti.

  • Firefox / Safari: Sprémme 'o buttóne maiuscole e ffà clic ncopp'a Recarreca, o pure spremme Ctrl-F5 o Ctrl-R (⌘-R ncopp'a Mac)
  • Google Chrome: spremme Ctrl-Shift-R (⌘-Shift-R ncopp'a nu Mac)
  • Internet Explorer/edge: Spremme 'o buttóne Ctrl pe' tramente ca faie click ncopp'a Refresh, o pure spremmere Ctrl-F5
  • Opera: Vaje addò 'o Menu → Mpustaziune (Opera → Mpustaziune ncopp' 'o Mac) e po' ncopp'a Privacy & sicurezza → Pulezza date d' 'o browser → Immaggene e file d' 'a cache.
// 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();
};