Sei in: Home > Rubriche > Germano Carella > Interpretazione del codice HTML
» Cerca

» Settori:

Rubriche


Rubrica a cura di Germano Carella


5. Interpretazione del codice html

Come si è già detto in precedenza, JAWS interpreta il codice html di una pagina per restituire un output testuale al navigatore non vedente.
Come è ovvio, vi sono degli elementi che lo screen reader considera più significativi rispetto ad altri, e altri elementi che ignora, perché servono semplicemente alla formattazione della pagina.

Cerchiamo ora di dare una breve panoramica di come JAWS interpreta il codice e quali comportamenti assume rispetto ad esso.
Innanzitutto, vengono fatte delle computazioni iniziali per dar conto all'utente dell'esistenza, all'interno della pagina, di frame, links, livelli di intestazione. Per far questo JAWS tiene conto degli attributi href contenuti nel tag <a>, degli elementi <iframe>, degli elementi <h1-h6>, oppure se la pagina è costruita con l'elemento <frameset> di tutti gli elementi <frame> contenuti nell'insieme.
I tag significativi, vengono memorizzati in alcune variabili interne di JAWS per far sì che quando l'utente compie un'azione su di essi JAWS possa pilotare il cursore del mouse o quello di sistema sull'elemento su cui l'utente ha compiuto l'azione.

Ma cerchiamo ora di fare un elenco degli elementi significativi che JAWS utilizza per la formattazione della pagina.
L'elemento <a> solitamente usato come ancora, serve per inserire un link (collegamento ipertestuale) all'interno della pagina web. Solitamente a questo elemento vengono associati degli attributi: href e title sono quelli di cui JAWS si serve per menzionare il nome del link. Per assegnare il nome ad un link JAWS segue determinate strategie:
dapprima controlla il contenuto testuale dell'elemento <a>. Se esiste del testo tra <a> e </a>, JAWS assegnerà il nome del link con quel testo. Questo è il caso di un link testuale, facilmente individuabile da JAWS.
Per es.: <a href=http://www.google.it>Vai al sito di google</a>, da JAWS verrà letto "link: vai al sito di google".
Il contenuto del tag <a> può essere anche l'inserimento di un'immagine, nella quale vi può essere scritto il contenuto testuale di un collegamento, oppure un qualcosa che suggerisca all'utente ciò che verrà visualizzato qualora lui cliccasse su di essa. Ovviamente, JAWS non può rilevare in automatico il contenuto dell'immagine che è stata inserita; l'unica cosa che può fare è dar conto all'utente del nome del file che contiene tale immagine, a meno che non risulti che nella definizione di inserimento, è stato utilizzato l'attributo alt, che serve a dare un testo alternativo, per permettere appunto ad i software di tecnologie assistive di leggerlo in luogo dell'immagine.
Se l'attributo alt non viene specificato, oppure ad esso è associata una stringa vuota "", JAWS leggerà il contenuto dell'attributo src, che serve ad informare il browser del file che contiene l'immagine da caricare.
Quindi abbiamo:
<a href=http://www.webxtutti.it>
<img src="logo.gif">
</a>
In questo caso JAWS leggerà semplicemente "link: logo".
Se invece avessimo avuto:
<a href=http://www.webxtutti.it>
<img src="logo.gif" alt="Logo di web per tutti">
</a>
JAWS avrebbe letto: "link grafico: logo di web per tutti".
JAWS è inoltre in grado di identificare link interni alla pagina, qualora si renda necessario posizionare il cursore di sistema su un elemento specifico. I link interni possono anche essere utilizzati in forma nascosta, cioè non visibili sullo schermo, per permettere agli screen readers di posizionarsi più velocemente tra le sezioni della pagina.
Vediamone alcuni esempi:
In generale, i link interni vengono utilizzati per riportare il cursore all'inizio della pagina qualora questa sia troppo grande per essere contenuta nello schermo. Questi sono link interni visibili, cioè di utilità per tutti.
Viene solitamente usato un identificatore per specificare una determinata posizione, sempre a mezzo dell'elemento <a> che sta per ancora.
<a name="top"></a>
Ciò vuol dire che è stata identificata la posizione top, all'interno della pagina.
Se esiste un link <a href="#top">Torna all'inizio</a> si sta informando il browser che si vuole portare il cursore di sistema nella posizione identificata da top. JAWS legge chiaramente "link di questa pagina, torna all'inizio".

Nel caso in cui si voglia creare un menu nascosto, per permettere all'utente non vedenti di muoversi più comodamente all'interno della pagina, si potrebbe fare in questo modo.
supponiamo di voler suddividere la pagina in tre sezioni: un menu di navigazione, un motore di ricerca ed una sezione dedicata ai contenuti.
Si dovranno creare tre ancore: menu, ricerca, contenuti.
In questo modo, sarà possibile assegnare dei riferimenti interni a queste sezioni e nasconderli allo schermo; è possibile farlo assegnando un attributo title nella definizione dell'elemento <a> ed omettendo il testo tra l'inizio e la fine dell'elemento.
Il codice corrispondente potrebbe essere questo:
<html>
<head>
<title>Menu nascosti</title>
</head>
<body>
<a href="#menu" title="menu principale"></a>
<a href="#ricerca" title="motore di ricerca"></a>
<a href="#contenuti" title="contenuti"></a>
...
<a name="menu"></a>

...
<a name="ricerca"></a>

...

<a name="contenuti"></a>

...

</body>
</html>
Si è così creata una pagina divisa in tre sezioni che sarà possibile raggiungere comodamente a partire dall'inizio della lettura della pagina. JAWS leggerà in questo caso l'attributo title degli elementi <a> mancando il testo, così il link non sarà visibile a schermo.
Attenzione: in molti casi succede che il webmaster include nell'href anche il nome della pagina a cui si fa riferimento, che solitamente è la stessa che si sta visualizzando. Se ciò avviene, JAWS leggerà tutto normalmente, ma all'atto di dare invio sul link, ricaricherà automaticamente la pagine cominciando a leggerla automaticamente; ricordo che questo avviene per default e che non c'è modo di evitarlo. Così facendo l'utente perderà comunque il focus che era stato attivato dal link interno, quindi si troverà costretto a cercarlo comunque manualmente.
Ad esempio, se avessimo scritto <a href="questapagina.htm#menu"></a> JAWS avrebbe caricato di nuovo la pagina che stavamo visualizzando e noi non avremmo ottenuto il risultato che ci eravamo prefissati. Quindi, è bene ricordare che i link interni non vanno mai fatti seguire dal nome della pagina cui si riferiscono, a meno che la pagina non sia diversa da quella che si sta attualmente visualizzando.
Solitamente, nell'elemento <a> esistono altri attributi che possono essere utilizzati: accesskey="nometasto", che serve ad informare il browser che, attraverso la pressione di quel determinato tasto, l'utente raggiungerà il link su cui è stato definito da qualsiasi posizione della pagina si trovi. Se ad esempio vogliamo che al link "mappa del sito" venga associato il tasto alt+m possiamo scrivere in questo modo:
<a href="mappa.htm" accesskey="m">Mappa del sito</a>.
Quando JAWS raggiunge il link "mappa del sito" leggerà: "link: mappa del sito - alt+M".
In effetti, l'utente non vedente, viene messo a conoscenza del tasto di scelta rapida soltanto quando raggiunge il link che lo ha definito, non prima. Ciò vuol dire che, in qualsiasi caso, deve effettuare una prima navigazione elementare per capire quali siano i tasti di accesso, quali eventualmente gli acorgimenti che sono stati presi per una migliore navigazione. E' bene dunque ricordare che mettere ad ogni link un tasto di accesso, può non essere poi utile ai fini di una navigazione più veloce; non tanto per il tasto di acccesso in sé per sé, quanto perché, se la pagina è molto ricca di link l'utente non vedente potrebbe non ricordare tutti i tasti, specialmente se ad ogni pagina sono associati a link diversi tasti diversi. L'ideale sarebbe quello di individuare degli standard da utilizzare in tutte le pagine; in questo modo l'utente potrebbe sapere a priori che in una determinata pagina, con molta probabilità, troverà che alcuni tasti di accesso standard sono attivi. Quindi, senza dover navigare tutta la pagina, può già cominciare a provare se effettivamente questi tasti funzionano.
Spesso e volentieri, vengono anche utilizzati degli attributi evento, da associare a chiamate a funzioni javascript; quali ad esempio, la pressione di un tasto, il click del mouse, il passaggio del mouse sul link ecc.

Questi tipi di eventi possono servire a visualizzare dei menu a tendina che, dal punto di vista estetico, potrebbe risultare bello da vedere. Il problema è che JAWS, con eventi che riguardano il mouse, purtroppo non funziona, nel senso che non utilizzando il mouse ma un cursore virtuale, non è in grado, almeno per il momento, di rilevare l'evento onclick, onmouseover ecc.. Ciò vuol dire che, quando giunge sul link, tenterà di attivarlo solo per mezzo dell'attributo href e non utilizzerà affatto l'evento onclick.
Per risolvere il problema potrebbe non essere necessario eliminare le funzionalità che dà l'evento onclick o l'evento onmouseover, includendo all'interno dell'attributo href la stessa chiamata alla funzione javascript che è stata definita negli attributi di evento onclick ed onmouseover: <a href="javascript:nomefunzione">…</a>. In questa maniera, quando JAWS giunge sul link, attiverà lo script che è stato chiamato nell'href e l'utente potrà usufruire delle stesse funzionalità. Purtroppo, sembra che questa forma di codice non sia compatibile con tutti i browser. A questo punto, sempre per nulla togliere alla grafica ed all'estetica, potrebbe rivelarsi utile la modalità di link nascosto. Per link nascosto si intende che non ci deve essere testo tra <a> e </a>, ma il testo del link va messo nell'attributo title soltanto; in questo mdo lo screen reader rileva il link, ma quest'ultimo non viene visualizzato: <a href="menuatendina.htm" title="Menu a tendina"></a>.
Un altro evento che può essere utilizzato è l'evento onkeypress; in realtà questi eventi si possono utilizzare su qualsiasi elemento html, non necessariamente sull'elemento <a>. Questo evento viene generato non appena viene premuto un tasto. Quando è impostato l'attributo onkeypress alla pressione di un tasto viene chiamata una funzione, solitamente inclusa all'interno di un javascript; qusta funzione ha il compito di verificare quale tasto sia stato premuto e, in base a questo, decidere le azioni da intraprendere. Generalmente questa tecnica viene usata per scrivere delle pagine più velocemente utilizzabili con menu a scelta numerica, come avviene per alcuni servizi telefonici automatici. Purtroppo, ultimamente, JAWS prende sempre più possesso della tastiera quando si naviga ed alcuni dei suoi comandi possono andare in conflitto con dei siti realizzati secondo questa tecnica di pressione dei tasti. A questo purtroppo il webmaster non può porre rimedio; dovrebbe essere l'8utente a disabilitare l'uso di alcuni tasti di JAWS per poter usufruire delle funzionalità che la tecnica dell'onkeupress mette a disposizione.
L'elemento <br> viene solitamente utilizzato per forzare il ritorno a capo di una linea di testo. Fortunatamente JAWS fa un buon uso di questo elemento: infatti, quando una pagina viene riformattata da JAWS con il cursore virtuale, non si tiene conto dei ritorni a capo spontanei, cioè non forzati dal tag <br>. Ciò avviene perché JAWS prende in considerazione lo schermo virtuale di righe e colonne che deve usare per riformattare la pagina. Solitamente le righe sono di 150 caratteri di lunghezza; quindi quando si sta formattando un testo, tutto lo spazio disponibile viene utilizzato, a meno di non incontrare il tag <br> prima della fine della riga virtuale. Se ciò avviene JAWS andrà a capo, mantenendo così la compatibilità grafica della pagina.

I frames

Quando un documento html viene strutturato in frames, gli elementi che vengono usati sono <frameset> e <frame>. JAWS non tiene conto della grandezza, del bordo, dell'incolonnamento dei frames, ma struttura la pagina in modo che siano visualizzati in verticale a partire dal primo incontrato interpretando il codice. Ma vediamo un esempio di come JAWS legge i frames, scrivendo prima il codice html relativo e poi simulando una visualizzazione virtuale della pagina strutturata in frames.
<html>
<head>
<title>Pagina ocn frames</title>
<frameset …>
<frame name="menu" src="menu.htm"></frame>

<frame name="content" src="content.htm"></frame>
</frameset>
</html>

Per determinare di quanti frame sia composta la pagina, JAWS conta semplicemente gli elementi <frame> presenti; non tiene conto dei frame nidificati, anche se nella visualizzazione di fatto non ne cambia la struttura.

Simulazione virtuale:
La pagina ha due frame e nessun link.
Menu frame


fine menu frame
vuoto
content frame


fine content frame

Saltare da un frame all'altro, con JAWS è facilissimo; basta infatti premere la M o control seguito dal numero di frame al quale si vuole andare e il cursore virtuale verrà posizionato all'inizio di esso. In questo modo, delle pagine contenenti dei frame non nidificati, risultano molto ben gestibili, almeno con l'ultima versione di JAWS. Quando i frame si nidificano le cose si complicano: JAWS non sa distinguere tra un frame nidificato ed uno non nidificato, quindi la pressione della lettera m ci sposterà indistintamente all'interno dell'uno o dell'altro. Sarebbe preferibile, quantomeno, non utilizzare dei frame nidificati, perché questi possono generare enorme confusione.
L'identificazione di un frame viene fatta attraverso il suo name o, se è presente, il suo title. E' chiaro che occorrerebbe, per maggiore chiarezza, scrivere dei titoli comprensibili per identificare un frame. Gli editor visuali, solitamente, chiamano i frame frame1, frame2….frameN; questo non può essere molto accettabile, poiché è bene sapere almeno ciò che il frame contiene prima di potervi accedere.

I forms

Oggi come oggi i form sono diventati quasi una costante. Sono generalmente moduli che servono per effettuare la registrazione ad una casella di newsletter, oppure per effettuare il login per scaricare un programma, oppure per selezionare qualcosa che poi verrà visualizzato nella pagina successiva.
In modalità navigazione virtuale JAWS non interagisce spontaneamente con i form, nel senso che fa semplicemente vedere che ci sono ma non dà la possibilità di selezionare delle caselle a meno che l'utente non gli dica di farlo. E' molto probabile, che un utente alle prime armi, non appena giunto su un campo editazione (<input type="text">, tenti di scrivere nella casella. Ovviamente dopo un po' si accorge che in realtà non sta scrivendo nulla; infatti, per interagire con un modulo, bisogna prima raggiungerlo con il cursore virtuale e poi premere invio sul campo che si desidera modificare. Non appena premuto invio JAWS ci avverte che siamo entrati nella modalità "forms" oppure "maschere". In questo modo è possibile accedere alle caselle dei form premendo il tasto tab e si può anche scrivere o selezionare all'interno di una casella di selezione o combinata. Quando poi si preme un pulsante, di submit o reset, JAWS attende che la nuova pagina venga caricata ed esce automaticamente dalla modalità "forms".

Si può dire, in generale, che è abbastanza semplice interagire con i moduli, a patto di utilizzare degli accorgimenti per rendere ancora più immediato il loro utilizzo.
Quando si giunge a una casella di editazione, bisognerebbe farla precedere da una descrizione di ciò che si sta editando: il nome, il cognome, l'indirizzo email, ecc.. E' tuttavia un fenomeno abbastanza diffuso, salvo qualche caso in cui si vuole includere il modulo in una tabella orizzontale, cioè con le intestazioni messe in orizzontale sulla riga superiore ed i campi editazione affiancati nella riga inferiore. Facciamo un esempio pratico per capire:
<form …>
<table>
<tr>
<td>Nome </td>
<td>Cognome </td>
<td>profesione </td>
</tr>
<tr>
<td>
input type="text" name="nome">
</td>
<td>
<input type="text" name="cognome">
</td>
<td>
<input type="text" name?"professione">
</td>
</tr>
</table>

Abbiamo costruito una tabella che, sulla prima riga ha le intestazioni dei campi che si trovano sulla seconda riga. Ora vediamo come JAWS legge questo modulo:
tabella con tre colonne e due righe
nome
cognome
professione
editazione
editazione
editazione
fine tabella

E' evidente dunque che la comprensione di questo tipo di modulo non è del tutto immediata; infatti, quando si è in modalità "form" non vi è alcun modo di sapere a quale intestazione ci si sta riferendo quando si scrive qualcosa; per farlo bisognerebbe prima uscire dalla modalità "form" premendo il tasto + del tastierino numerico e poi utilizzare i comandi di lettura tabella, sempre che questo modulo così costruito sia stato incluso in una tabella; se non lo è, infatti, non vi è alcun modo per sapere a quale intestazione ci si sta riferendo, se non ricostruendola mentalmente.

Un altro accorgimento che si dovrebbe utilizzare è il seguente: spesso capita di trovare delle caselle combinate (menu a tendina) che servono a selezionare qualcosa da visualizzare; molte volte viene utilizzato l'evento onchange per controllare quando un elemento del menu a tendina cambia la selezione. Questo comporta che JAWS, si accorge che si sta aprendo una pagina nuova ed esce dalla modalità "form" non appena l'evento onchange entra in azione; non dando la possibilità all'utente di leggere tutti gli elementi del emnu. In luogo dell'evento onchange si dovrebbe utilizzare un pulsante da premere non appena l'utente sceglie ciò che vuole visualizzare.

Per quanto riguarda le caselle combinate, esiste la possibilità di dichiarare dei menu a tendina che accettino la multiselezione degli elementi. Per far questo, basta dichiarare nella definizione della select l'attributo multiple=true. In questo modo, è possibile selezionare più di un elemento alla volta. JAWS, si accorge della dichiarazione dell'attributo multiple e riconosce dunque che la casella è a selezione multipla ed avverte l'utente, mettendolo in condizioni di capire che, se vuole, può selezionare anche più di un elemento. E' un errore dichiarare una select senza impostare l'attributo multiple e dichiarare degli elementi interni option con più di un elemento selezionato. Facciamo un esempio:
<form action="qualcosa" method="post">
<select multiple="true" name="selezione">
<option selected value="1">primo elemento</option>
<option selected value="2">secondo elemento </option>
<option value="3">terzo elemento</option>
</form>
JAWS leggerà:
La pagina ha nessun link:
casella elenco a selezione estesa: primo elemento.

In questo modo, l'utente sa che si trova all'interno di un menu a tendina nel quale si possono selezionare più cose alla volta.
Se noi avessimo dichiarato <select> senza impostare l'attributo multiple="ture", JAWS avrebbe letto: "casella combinata: primo elemento". In html, tra l'altro, è sbagliato dichiarare una select senza impostare l'attributo multiple="true" e poi dichiarare più di un elemento <option> selected, cioè dire che di default due elementi del menu sono già selezionati.

Elenchi puntati

Da qualche tempo a questa parte, anche gli elenchi puntati vengono rilevati da JAWS. Nelle versioni precedenti alla 4.02, infatti, le liste di elenchi non venivano identificate.
Non vi sono particolari accorgimenti su queste ultime, salvo il fatto che quando una lista di elenchi puntati ne contiene più di una al suo interno JAWS ne avverte l'utente e la lettura potrebbe essere un pochino più rallentata. Infatti non appena JAWS posiziona il suo cursore virtuale all'inizio di una lista di elenchi avverte l'utente di quanti elementi è formata la lista e se eventualmente contiene liste al suo interno.
Comunque, con i comandi di navigazione complessa è possibile saltare tutta la lista mediante il comando E che porta il cursore virtuale alla fine di un tag html.
Vediamo ora come JAWS interpreta e legge le liste di elementi:
costruiamo una semplicissima lista di elenchi puntati che contiene al suo interno un'altra lista di elenchi.
<ul>
<li>Primo elemento </li>
<li>Secondo elemento </li>
<ul>
<li>Primo elemento del sottoinsieme</li>
<li>Secondo elemento del sottoinsieme</li>
</ul>
</ul>

Da JAWS verrà letta in questo modo:


Elenco di due elementi contenente un elenco nidificato
Elenco puntato: primo elemento
Elenco puntato Secondo elemento
Elenco di due elementi: livello interno 1
Elenco puntato: primo elemento del sottoinsieme
Elenco puntato secondo elemento del sottoinsieme.
Fine elenco: livello interno 1
Fine elenco

Si capisce chiaramente come la lettura di tutti questi elenchi possa essere un po' lunga e soprattutto come possa rallentare la navigazione. Tuttavia va sottolineato che non si può pensare di eliminare tutti gli elementi html e perché questi possono o meno dar fastidio; magari si può evitare che vi siano troppi elenchi nidificati, oppure si può far in modo che questi siano nascosti finché non vengano aperti mediante un click su un link.
In una pagina di un forum, ad esempio, dove i messaggi sono racchiusi all'interno di un elenco, le risposte sono in genere scritte in elenchi interni; questo ovviamente succede perché devono essere messe in risalto a livello grafico ed estetico. Quando i messaggi sono più di 50, la lettura di questi potrebbe risultare un po' pesante, specialmente se si sta cercando la risposta specifica ad uno specifico messaggio. Una cosa importante da notare è che JAWS, per accedere ad una lista di elenchi puntati, utilizza il comando "L". Questo comando, sposta il cursore virtuale all'inizio della lista. Sfortunatamente, "L" non fa distinzione alcuna tra liste interne od esterne; quindi, se esistono su una pagina più liste di elementi e se queste ne contengono altre al loro interno, l'uso del comando "L" risulterà molto caotico, poiché non permette all'utente di capire a quale delle tante liste interne ci si sta riferendo. Chiaramente questo è un difetto derivante più dallo screen reader che dal codice html, tuttavia è proprio dei difetti che bisogna tener conto per cercare soluzioni adeguate.

Gli headings

Anche per i livelli di intestazione, come per le liste, da qualche versione di JAWS è stato introdotto il loro rapido utilizzo. In generale è molto utile lavorare con gli headings poiché i comandi di salto permettono all'utente di spostarsi tra una sezione e l'altra della pagina attraverso la semplice pressione di un tasto.
Come si sa, gli elementi <h1…h6> identificano l'importanza del livello di intestazione che si sceglie di utilizzare per una specifica sezione. <h1> è il più importante (tant'è vero che il carattere viene ingrandito), <h6> è il meno importante.
Fino alla penultima versione di JAWS, la pressione della lettera h spostava il cursore virtuale all'heading più prossimo alla posizione da cui partiva il comando. Ciò permetteva in effetti di spostarsi tra un'intestazine e l'altra, ma il livello di importanza non veniva preso in considerazione; quindi, per fare un esempio, se un manuale veniva strutturato a headings, dove il livello 1 conteneva l'indice dei capitolo, il livello 2 gli effettivi capitoli ed il livello 3 i paragrafi, la pressione della lettera h spostava in sequenza tra un'intestazione e l'altra, ma non teneva conto né di indice, né di capitoli né di paragrafi.
Con la nuova ed ultima versione, sono stati introdotti sei comandi nuovi per i livelli di intestazione: 1…6 sulla tastiera. Quando si preme il numero 1 si andrà in sequenza fra tutte quelle intestazioni che avranno livello 1, saltando tutto ciò che c'è in mezzo, livelli inferiori compresi; stessa cosa avviene per gli altri numeri. Con questo metodo è possibile adottare delle strategie molto efficaci di navigazione, poiché se in una pagina sappiamo debba esistere una sezione dedicata all'immissione di messaggi e sappiamo inoltre che questa sezione è contrassegnata da un'heading, l'unica cosa che ci servirà sapere è il livello di importanza assegnatole dal webmaster. E' chiaramente necessaria una prima navigazione per effettuare una ricognizione della struttura della pagina, ma di questo verrà discusso in seguito.

Gli eventi

Per quanto riguarda gli eventi, bisogna sottolineare che JAWS non ne rileva nessuno, a parte quelli di pressione di tastiera, quando si trova in modalità virtuale. Bisogna però notare che, quando si deve interagire con un form, si deve indicare allo screen reader di uscire dalla modalità virtuale per entrare nella modalità forms; in questo caso, tutti gli eventi di cambiamento del testo o del focus saranno rilevati dallo screen reader. Eventi invece che controllano il mouse non sono mai rilevati, sia che ci si trovi in modalità virtuale sia che ci si trovi in modalità form.

E' bene ricordare di non far uso dell'evento onchange nei form, poiché, come abbiamo detto, JAWS lo rileva e ne segue lo svolgimento; quindi, quando l'utente interagisce con un form si troverebbe in difficoltà se, ad ogni movimento di selezione, si attivasse questo evento, perché JAWS riattiverebbe automaticamente la modalità virtuale, togliendo al navigatore il focus su cui si era posizionato.

Per gli eventi di pressione di tastiera, JAWS rileverà solo quelli che non rispondono a comandi specifici di navigazione dello screen reader, a meno che l'utente non disattivi la modalità virtuale; solo in quel caso gli eventi funzioneranno con tutte le combinazioni tasti prescelte. Ciò avviene perché in modalità virtuale la tastiera è controllata da JAWS e non dal browser in uso; quindi se la pressione di un tasto corrisponde ad uno dei tanti comandi di navigazione, tale comando sarà rilevato; impedendo così al browser di rilevare la pressione del tasto medesimo.

Le tabelle

Cerchiamo di spiegare, brevemente, come avviene la lettura delle tabelle da parte di JAWS.
Innanzitutto, esistono due tipi di tabelle che si possono incontrare: le tabelle di layout (formattazione) e le tabelle di dati. Queste ultime servono, ad esempio, a schematizzare informazioni riguardanti un riepilogo della compilazione di un modulo; oppure possono essere informazioni relative alla descrizione di un prodotto, ecc.. Le tabelle di layout, invece, servono a formattare del testo all'interno di un documento; ad incolonnarlo ad esempio.

La lettura delle tabelle avviene, in entrambi i casi, allo stesso modo; con l'unica differenza che JAWS dovrebbe non identificare eventuali tabelle di layout, quindi rendere la lettura più semplice al navigatore. Quando si definisce una tabella, si dovrebbe utilizzare l'attributo summary che ne dovrebbe descrivere il contenuto; sebbene questo attributo non risolva in alcun modo il problema della lettura della tabella, poiché non si occupa di informare lo screen reader delle intestazione di colonna.

In una tabella di dati, se costruita correttamente, avrà le intestazioni di colonna sulla prima riga; nelle righe successive le relative informazioni. JAWS identifica, quando legge la tabella di dati, come intestazioni di colonna tutte le colonne che appartengono alla prima riga; con i comandi di lettura tabella, è possibile fare riferimento ad esse per orientarsi nella lettura. Quando si struttura una tabella di dati, è necessario che tutte le righe abbiano lo stesso numero di colonne e che le colonne della prima riga diano le intestazioni delle colonne successive. Soltanto così JAWS leggerà correttamente la tabella; si confonderà in qualsiasi altro caso. La lettura della tabella, con i comandi di navigazione elementare, avviene nel modo seguente: la tabella viene scomposta in tante righe verticali, che corrispondono ciascuna ad una colonna. Il numero delle righe sarà pari alla somma totale delle colonne presenti su tutte le righe di una tabella. Per esempio, se la tabella è costruita su due righe, aventi quattro colonne ciascuna, JAWS la scomporrà in otto righe separate e distinte.

Le tabelle di layout che sono utilizzate per formattare un documento, in genere non hanno le intestazioni di colonna sulla prima riga. JAWS non dovrebbe identificare le tabelle di layout. Per far in modo che questo avvenga, bisogna tener conto delle seguenti considerazioni: JAWS riconosce come tabelle di layout solo ed esclusivamente quelle tabelle che abbiano una sola riga (<tr>) costituita da più colonne (<td>); oppure più righe costituite da una sola colonna che è pari alla larghezza di tutta la riga. In qualsiasi altro caso, JAWS identificherà queste tabelle come tabelle di dati. Non identificando le tabelle di layout, JAWS non identifica neanche l'attributo summary, proprio perché non necessario ai fini contenutistici.
Gli attributi headers e scope, non sono al momento tenuti in considerazione da JAWS, sebbene questi ultimi potrebbero aiutare e non poco la lettura di una tabella anche in navigazione elementare.
Per un esempio di lettura di una tabella, vedere la puntata 1 della rubrica.

Gli elementi che non sono stati discussi in questo capitolo, non arrecano nessun problema a JAWS. L'unica nota riguarda le immagini ed i link di mappa immagine:
in entrambi i casi, per le immagini (elemento <img>), è necessario almeno l'attributo alt che ne descriva il contenuto, così come avviene per i link grafici.
Per i link di mappa immagine, bisogna seguire le stesse regole che valgono per i link grafici.

CABI

Webxtutti aderisce alla Campagna per l'Accessibilità delle Biblioteche in rete

Campagna Accessibilità
Biblioteche In rete

2003

Webxtutti supporta l'iniziativa dell'anno europeo delle persone disabili

Anno europeo del disabile

Webaccessibile

E' in linea Web accessibile il sito nato per la promozione, diffusione e applicazione delle guidelines WAI.

infoweb - mappa - contatti - help
©2002-2003 Fondazione Ugo Bordoni | Grafica Unbound.it