Vai ai contenuti

LAU



Home > progettare > accessibilità: strutturare il codice > Progettare con Ajax: il Progressive Enhancement


Progettare con Ajax: il Progressive Enhancement

Accorgimenti per progettare un Ajax accessibile.

a cura di: Filippo Pusset | 18 ottobre 2006


1. Introduzione

Ajax (Asinchronous Javascript and XML) è una tecnica di programmazione che consente di migliorare l'interazione di applicativi web intervenendo sul processo di richiesta effettuato al web server quando si modifica il contenuto della pagina. Con questa tecnica è possibile ottenere interfacce con tempi di risposta molto ridotti, il che va a beneficio degli utenti.

Tuttavia Ajax se adottato senza accorgimenti particolari può causare problemi a livello di accessibilità. Per essere esatti, esistono due diversi ordini di problemi: dunque per creare siti web accessibili che fanno uso di Ajax ci sono due "barriere" di natura diversa da superare.
In due brevi articoli introduttivi presenterò alcuni provvedimenti da prendere per superare tali barriere. Nel presente articolo è presentata una tecnica volta a progettare pagine che mantengono le proprie funzionalità anche con Ajax non attivo.
Nel seguente articolo "Realizzare pagine accessibili con Ajax" si segnalano degli accorgimenti per superare alcuni dei problemi che Ajax può causare anche se attivo.

WCAG 1.0, punto 6.3

Assicurarsi che le pagine siano utilizzabili quando script, applet o altri oggetti di programmazione sono disabilitati oppure non supportati. Se questo non è possibile, fornire informazione equivalente in una pagina accessibile alternativa. [Priorità 1]

Linee guida sull'attuazione della Legge Stanca, requisito 15

Assicurarsi che le pagine siano utilizzabili quando script, applet o altri oggetti di programmazione sono disabilitati oppure non supportati. Se questo non è possibile:

  • fornire una spiegazione della funzionalità svolta;
  • garantire un'alternativa testuale equivalente.

Poichè Javascript potrebbe non essere installato o essere disabilitato nel browser dell'utente, non è possibile utilizzare (solo) Ajax per gestire funzionalità fondamentali.
In sostanza se disabilitando Javascript l'utente non riesce ad accedere alle informazioni ed ai servizi fondamentali di una pagina, questa non è accessibile. Oltretutto, l'oggetto XMLHttpRequest utilizzato da Ajax non è supportato da tutti ii browser, nemmeno con Javascript abilitato; ad esempio il browser Opera non interpreta bene l'oggetto. Ciò significa che un sito accessibile non potrà essere realizzato utilizzando solo Ajax: i servizi e le funzionalità ottimizzati tramite Ajax, in pratica, devono essere fruibili anche senza di esso.

torna su

2. Progressive Enhancement: un approccio alla progettazione

Perchè pagine che utilizzano Ajax siano accessibili, dunque, è necessario che disattivando Javascript esse restino funzionanti.
Questa necessità è realizzabile tramite un particolare approccio alla loro creazione, definito "Graceful Degradation" o, in modo più corretto riguardo al procedimento di progettazione, "Progressive Enhancement".
Questi procedimenti mirano ad ottenere un sistema che possa funzionare anche se alcune sue componenti (nel nostro caso Ajax) vengono meno.
Nel progettare pagine accessibili che fanno uso di Ajax il procedimento più efficace e corretto non è quello di creare pagine pensate per l'utilizzo di Ajax stesso e tentare in seguito di convertirle in modo che funzionino anche senza di esso (questo è il modo con cui l'approccio "Graceful Degradation" è spesso realizzato su web, ossia prevedendo di progettare per i nuovi browser e poi di convertire il risultato perchè funzioni anche su browser vecchi).
Questo procedimento è rischioso, perchè "convertire" le pagine può risultare impossibile o comunque richiedere più tempo del previsto.

La tecnica giusta è invece progettare pagine le cui funzionalità fondamentali siano fruibili senza Ajax (ed in generale senza Javascript), ottenendo un sito perfettamente utilizzabile da tutti.
In seguito è possibile ottimizzare la qualità della navigazione fornendo facilitazioni per chi è in grado di visualizzare pagine Ajax.

"Progressive Enhancement" fa riferimento proprio a questo: un miglioramento progressivo (tramite Ajax) della pagina, a partire da una base di funzionalità a cui tutti possono accedere. In questo articolo di Jeremy Keith [link esterno] si esaminano più diffusamente i benefici di questo approccio.
Per definire meglio il concetto di "funzionalità fondamentali", prendiamo in esempio alcuni siti che utilizzano Ajax.

In Writely [link esterno] recentemente acquistato da Google, è un servizio online che offre funzionalità tipiche di un Word processor sul proprio browser.
Utilizza Ajax in modo massiccio, fondando su di esso l'intero servizio che offre: se si prova ad accedere a Writely con Javascript disabilitato, o con un browser che non supporta l'oggetto XMLHttpRequest, si viene reindirizzati ad una pagina che, semplicemente, avvisa che senza questi requisiti non si può accedere alla pagina. Ciò è comprensibile, visto che in effetti l'uso di Ajax è l'unico metodo per salvare pagine ed in geneale cambiare rapidamente la formattazione del testo in modo rapido utilizzando un web browser.
Tuttavia, se non si possono offrire questi servizi a chi ha Javascript disabilitato, il sito non è considerato accessibile.

Anche Gmail [link esterno], il servizio di posta elettronica di Google, utilizza Ajax per consentire una serie di servizi che non sarebbe possibile ottenere senza di esso. Ad esempio, quando si invia un messaggio, si salva una bozza o ci si sposta di cartella, solo la parte corrispondente della pagina viene modificata, facilitando la procedura; inoltre quando si digita un indirizzo, il sistema offre una lista di suggerimenti che completano ciò che l'utente sta scrivendo.
Se si accede alla pagina con Javascript disabilitato, si viene reindirizzati ad una pagina alternativa, scritta con il solo HTML, che offre le funzionalità base di un servizio di posta elettronica. In questo caso, le linee guida sull'accessibilità sono rispettate, in quanto le funzionalità principali del sito sono garantite anche con Javascript disabilitato.
La pagina alternativa, tuttavia, è pur sempre una pagina a parte, differente da quella a cui l'utente avrebbe accesso utilizzando Javascript.

Il paradigma più radicale (ma più efficace) di Progressive Enhancement per Ajax consiste nel progettare prima pagine che utilizzano esclusivamente linguaggi server-side per gestire l'interazione con l'utente (quindi efficaci anche con Javascript disabilitato) ed utilizzare poi l'oggetto XMLHttpRequest per "catturare" l'invio dei dati al server, come è spiegato in questo articolo [link esterno] di Ryan Campbell.

torna su

[ Torna all’inizio della pagina ]



Sito realizzato dal Laboratorio di Accessibilità e Usabilità del CSI Piemonte - Dichiarazione di accessibilità

[ Torna all’inizio della pagina ]