Assistenza per l'accessibilità

Le estensioni consentono agli utenti di creare la loro esperienza di navigazione ideale, personalizzata in base alle capacità e alle preferenze individuali. Le estensioni devono includere componenti di accessibilità che incoraggino una base di utenti inclusiva, consentendo alle persone con disabilità visive, perdita dell'udito, destrezza limitata e altre disabilità di accedere all'estensione.

Tutti, non solo gli utenti con esigenze speciali, possono trarre vantaggio dalle funzionalità di accessibilità. Le scorciatoie da tastiera sono utili per persone con problemi di vista, scarsa destrezza e utenti esperti. I sottotitoli codificati e le trascrizioni sono essenziali per gli utenti sordi, ma aiutano anche chi impara le lingue.

Le persone possono interagire con un'estensione in vari modi. Alcuni utenti hanno un monitor, una tastiera e un mouse standard oppure potrebbero dipendere da una lente d'ingrandimento dello schermo e possibilmente da un lettore di schermo. Sebbene sia impossibile prevedere quali strumenti verranno utilizzati per accedere a un'estensione, ci sono passaggi che qualsiasi sviluppatore può intraprendere per rendere un'estensione il più accessibile possibile.

Integrare controlli dell'interfaccia utente accessibili

Se gli utenti non riescono ad accedere ai controlli dell'interfaccia utente, non possono utilizzare un'estensione. Il modo più semplice per creare una UI accessibile è utilizzare un controllo HTML standard.

Controlli standard

Se possibile, utilizza i controlli UI HTML standard. I controlli HTML standard sono accessibili da tastiera, si adattano facilmente e sono generalmente compresi dagli screen reader.

Screenshot e codice per pulsante, casella di controllo, opzione, testo, selezione/opzione e link

WAI-ARIA nei controlli personalizzati

La Web Accessibility Initiative - Accessible Rich Internet Applications, WAI-ARIA, è una specifica per rendere i controlli dell'interfaccia utente accessibili agli screen reader tramite un insieme standard di attributi DOM. Questi attributi forniscono informazioni allo screen reader sulla funzione e sullo stato attuale dei controlli di una pagina web.

Per aggiungere il supporto WAI-ARIA ai controlli personalizzati, gli elementi DOM di un'estensione dovranno essere modificati per includere gli attributi che Chrome utilizza per generare eventi durante l'interazione dell'utente. Gli screen reader rispondono a questi eventi e descrivono la funzione del controllo. Gli attributi DOM specificati da WAI-ARIA sono classificati in ruoli, stati e proprietà.

<div role="toolbar">

La proprietà aria-activedescendant specifica quale elemento secondario di una barra degli strumenti riceve lo stato attivo quando la barra degli strumenti lo riceve. Il codice tabindex="0" specifica che la barra degli strumenti riceve lo stato attivo nell'ordine del documento.

Di seguito è riportata la specifica completa di una barra degli strumenti di esempio:

<div role="toolbar" tabindex="0" aria-activedescendant="button1">
  <img src="buttoncut.png" role="button" alt="cut" id="button1">
  <img src="buttoncopy.png" role="button" alt="copy" id="button2">
  <img src="buttonpaste.png" role="button" alt="paste" id="button3">
</div>

Una volta aggiunti ruoli, stati e proprietà WAI-ARIA al DOM di un controllo, Google Chrome genera gli eventi appropriati per lo screen reader. Poiché il supporto di WAI-ARIA è ancora in fase di sviluppo, Google Chrome potrebbe non generare un evento per ogni proprietà WAI-ARIA e gli screen reader potrebbero non riconoscere tutti gli eventi generati.

Per un breve tutorial sull'aggiunta di controlli WAI-ARIA ai controlli personalizzati, consulta la presentazione di Dave Raggett al WWW2010.

Impostare lo stato attivo sui controlli personalizzati

Lo stato attivo della tastiera è essenziale per gli utenti che navigano sul web senza mouse. Assicurati che i controlli di funzionamento e navigazione, come pulsanti, caselle di riepilogo e barre dei menu, possano ricevere lo stato attivo della tastiera.

Per impostazione predefinita, gli unici elementi nel DOM HTML che possono ricevere lo stato attivo della tastiera sono ancore, pulsanti e controlli modulo. Tuttavia, l'impostazione dell'attributo HTML tabIndex su 0 inserisce gli elementi DOM nella sequenza di schede predefinita, consentendo loro di ricevere lo stato attivo della tastiera.

element.tabIndex = 0
element.focus();

L'impostazione tabIndex = -1 rimuove l'elemento dalla sequenza di schede, ma consente comunque all'elemento di ricevere il focus della tastiera in modo programmatico.

Supportare l'accesso da tastiera

Le estensioni devono essere utilizzabili solo con una tastiera, consentendo l'accesso agli utenti che non possono usare un mouse e agli utenti esperti che semplicemente non lo usano.

Verifica che un utente possa spostarsi tra le diverse parti di un'estensione senza utilizzare il mouse. Verifica che l'utilizzo di un popup sia navigabile tramite tastiera. Utilizza le scorciatoie da tastiera di Chrome per determinare se un'estensione è navigabile.

Assicurati che sia facile vedere quali parti dell'interfaccia hanno il focus della tastiera. In genere, un contorno di messa a fuoco si sposta nell'interfaccia, ma se il CSS viene utilizzato in modo eccessivo, il contorno potrebbe essere eliminato o il contrasto ridotto.

Un contorno di messa a fuoco su un pulsante di ricerca

Un contorno di messa a fuoco su uno di una serie di link

Scorciatoie

Sebbene la strategia di navigazione mediante tastiera più comune preveda l'utilizzo del tasto Tab per spostare lo stato attivo nell'interfaccia di un'estensione, non è sempre l'opzione più semplice o efficiente.

Un semplice gestore della tastiera JavaScript potrebbe avere il seguente aspetto. Nota come la proprietà WAI-ARIA aria-activedescendant viene aggiornata in risposta all'input dell'utente per riflettere il pulsante della barra degli strumenti attivo corrente.

 function optionKeyEvent(event) {
  var tb = event.target;
  var buttonid;

  ENTER_KEYCODE = 13;
  RIGHT_KEYCODE = 39;
  LEFT_KEYCODE = 37;
  // Partial sample code for processing arrow keys.
  if (event.type == "keydown") {
    // Implement circular keyboard navigation within the toolbar buttons
    if (event.keyCode == ENTER_KEYCODE) {
      ExecuteButtonAction(getCurrentButtonID());
      // getCurrentButtonID defined elsewhere
    } else if (event.keyCode == event.RIGHT_KEYCODE) {
      // Change the active toolbar button to the one to the right (circular).
      var buttonid = getNextButtonID();
      // getNextButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else if (event.keyCode == event.LEFT_KEYCODE) {
      // Change the active toolbar button to the one to the left (circular).
      var buttonid = getPrevButtonID();
      // getPrevButtonID defined elsewhere
      tb.setAttribute("aria-activedescendant", buttonid);
    } else {
      return true;
    }
    return false;
  }
}
<div role="toolbar" tabindex="0" aria-activedescendant="button1" id="tb1"
     onkeydown="return optionKeyEvent(event);"
     onkeypress="return optionKeyEvent(event);">
  <img src="buttoncut" role="button" alt="cut" id="button1">
  <img src="buttoncopy" role="button" alt="copy" id="button1">
  <img src="buttonpaste" role="button" alt="paste" id="button1">
</div>

Le estensioni possono creare scorciatoie da tastiera esplicite per gli elementi importanti dell'interfaccia utente delle estensioni. Per implementare queste scorciatoie, collega i listener di eventi della tastiera ai controlli. Informa gli utenti delle scorciatoie disponibili fornendole nella pagina delle opzioni.

Fornire contenuti accessibili

Fornire contenuti accessibili è importante per tutti gli utenti. Molte delle seguenti linee guida potrebbero sembrarti familiari, in quanto riflettono le buone pratiche per tutti i contenuti web.

Testo

La scelta dei caratteri e le dimensioni del testo influiscono sulla leggibilità dei contenuti di un'estensione. Gli utenti con problemi di vista potrebbero dover aumentare le dimensioni del testo di un'estensione. Se utilizzi le scorciatoie da tastiera, assicurati che non interferiscano con le scorciatoie di zoom integrate in Chrome.

Come indicatore della flessibilità dell'interfaccia utente di un'estensione, applica il test del 200%: se le dimensioni del testo o lo zoom della pagina vengono aumentati del 200%, l'estensione è ancora utilizzabile?

Evita di incorporare testo nelle immagini. Gli utenti non possono modificare le dimensioni e gli screen reader non sono in grado di interpretare le immagini. Scegli invece un carattere web con stile, ad esempio uno dei caratteri disponibili nell'API Google Fonts. I caratteri web possono essere scalati a dimensioni diverse e sono accessibili alle persone che utilizzano screen reader.

Colori

Deve esserci un contrasto sufficiente tra il colore di sfondo e il colore del testo in un'estensione. Utilizza uno strumento di controllo del contrasto per verificare se i colori di sfondo e di primo piano forniscono un contrasto appropriato.

Quando valuti il contrasto, verifica che ogni parte dell'estensione che si basa su elementi grafici per trasmettere informazioni sia chiaramente visibile. Per immagini specifiche, è possibile utilizzare strumenti come Coblis - Color Blindness Simulator per vedere l'aspetto di un'immagine in varie forme di carenza di colore.

Valuta la possibilità di offrire diversi temi di colore o di consentire all'utente di personalizzare la combinazione di colori per creare un contrasto migliore.

Suono

Se un'estensione si basa su audio o video per trasmettere informazioni, assicurati che siano disponibili sottotitoli codificati o una trascrizione. Per saperne di più sui sottotitoli codificati, consulta le linee guida del programma Described and Captioned Media.

Immagini

Fornisci un testo alternativo informativo per le immagini.

<img src="img.jpg" alt="The logo for the extension">

Utilizza il testo alternativo per indicare lo scopo dell'immagine anziché una descrizione letterale dei contenuti. Le immagini distanziatrici o puramente decorative devono avere un testo alternativo "" vuoto o essere rimosse completamente dal codice HTML e inserite nel CSS.

Se l'estensione deve utilizzare il testo in un'immagine, includi il testo dell'immagine nel testo alternativo. Una buona risorsa a cui fare riferimento è l'articolo di WebAIM sul testo alternativo appropriato.

Scopri di più

Scopri di più sull'accessibilità in Chrome consultando il canale A11ycasts e leggendo la documentazione tecnica sull'accessibilità di Chromium.