Notizie: puoi sempre seguire i nostri aggiornamenti su Twitter (@MozillaItalia) e Facebook (/MozillaItalia)

Autore Topic: Strano comportamento di Firefox 4 con x/html e javascript  (Letto 3231 volte)

0 Utenti e 2 Visitatori stanno visualizzando questo topic.

Offline whitesockswolf

  • Post: 4
Ciao,

Lavoro sull'accesibilità web per non vedenti che interagiscono con screen reader Jaws e sintetizzatore vocale.
Sto usando x/html con WAI-ARIA e Javascript per rendere accessibili le pagine di un questionario web per uno user-test fatto con non vedenti.

La maggiore difficoltà è scontrarsi con diversi comportamenti dei vari browser e con le varie versioni di Jaws.

I problemi sono cominciati dopo aver installato la versione di Firefox 4 (e successiva 4.01).  :(
Lo stesso codice che prima funzionava con le release precedenti, non funziona più con Firefox 4.01.

L'impressione è che qualcosa di javascript non sia più supportato.
Infatti anche quando provo ad interagire con lo screen reader spento, usando il Tab (tipico tasto usato) per cambiare il focus da un elemento ad un altro, l'interazione si blocca. :-(

Con le versioni precedenti a Firefox 4, il codice funzionava, mentre con Internet Explorer 8 e 9 aveva dei problemi.
Mistero perché credo di aver usato elementi html standard.

A fine messaggio ho inserito un estratto del codice.
BREVE SPIEGAZIONE:
La form racchiude gli elementi di un questionario, con radio button, combo-boxes, checkboxes, textarea ed il bottone submit.

Il comportamento del radio button nell'esempio riportato sotto dovrebbe essere il seguente:
Il non vedente usa il "tab" per saltare da una scelta del rdio button ad un'altra.

1) Quando l'utente raggiunge l'ultima scelta, se l'utente non ha selezionato nulla, un alert vocale dice: 'Please, define your visual disability!'
ed il focus va sulla prima scelta del radio button di nuovo.

2) Altrimenti, se il non vedente seleziona una scelta, il focus va sul successivo elemento all'interno della form.

Ogni elemento della form (ad esempio il radio button), considera due eventi:

•   onFocus, quando il focus dell'utente va per la prima volta su l'elemento x/html (nell'esempio il radio button).
•   onBlur, quando si cambia focus dal radio button.

C'è qualcosa di sbagliato o che non sto considerando con la nuova versione di firefox?

Molte grazie per le risposte,
Giulio Mori


UN ESTRATTO DEL CODICE:

Codice: [Seleziona]
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<script type = "text/javascript">
<!-- hide me from older browser>
  function removeOldAlert()
  {
    var oldAlert = document.getElementById("alert");
    if (oldAlert)
      document.body.removeChild(oldAlert);
  }

  function addAlert(aMsg)
  {
    removeOldAlert();
    var newAlert = document.createElement("div");
    newAlert.setAttribute("role", "alert");
    newAlert.setAttribute("aria-live", "rude");
    newAlert.setAttribute("id", "alert");
    var msg = document.createTextNode(aMsg);
    newAlert.appendChild(msg);
    document.body.appendChild(newAlert);
  }



  function checkValidity3(aID, num, aMsg)
  {
    var elem = document.getElementById(aID);
    var invalid = true;
    for (var loop = 0; loop < window.document.questionario_conoscitivo.tipo_disabilita.length; loop++)
    {
                if (window.document.questionario_conoscitivo.tipo_disabilita[loop].checked == true)
                {
                               invalid = false;
                }
    }

    if (invalid) {
      elem.setAttribute("aria-invalid", "true");
                  if (num==window.document.questionario_conoscitivo.tipo_disabilita.length-1)
        addAlert(aMsg);

    } else {
      elem.setAttribute("aria-invalid", "false");
      removeOldAlert();
   }
                return invalid;
  }  


  function proseguire(msg1, … msg3, … msg16)
  {
                if(msg1 == true)
                {
                               …
                }

                else if(msg3 == true)
                {
                               window.document.questionario_conoscitivo.tipo_disabilita[0].focus();
                }

                else if(msg16 == true)
                {
                               …
                }              
                
  }

 function checkRisposta(invalid, … invalid3, … invalid16)
  {
                result = !(invalid) && … && !(invalid3) && … !(invalid16);
                return result;
  }    
// show me -->
</script>
</head>
<body onload="invalid = true; … invalid3= true; … invalid16= true;">

<form id="questionario_conoscitivo" name="questionario_conoscitivo" action="http://...questionario.php" method="POST" onsubmit="return checkRisposta(invalid,… invalid3, … invalid16);">

<div role="dialog" aria-labelledby="messaggio3">
<h2 id="messaggio3"><b>3) Kind of visual disability:</b></h2>
<input type="radio" aria-required="true" id="tipo_disabilita0" name="tipo_disabilita" value="Blind" onFocus="proseguire(invalid, … invalid3, … invalid16);" onblur="invalid3 = checkValidity3('tipo_disabilita0', 0, ‘Please, define your visual disability!');" />
<label for="tipo_disabilita0">Non vedente</label>
<input type="radio" aria-required="true" id="tipo_disabilita1" name="tipo_disabilita" value="Visually Impaired" onblur="invalid3 = checkValidity3('tipo_disabilita1', 1, 'Please, define your visual disability!');" />
<label for="tipo_disabilita1">Ipovedente</label>
<input type="radio" aria-required="true" id="tipo_disabilita2" name="tipo_disabilita" value="None" onblur="invalid3 = checkValidity3('tipo_disabilita2', 2, 'Please, define your visual disability!');" />
<label for="tipo_disabilita2">Nessuna</label>
</div><br/>

</form>

</body>
</html>
« Ultima modifica: 14 Giugno 2011 18:02:50 da Sokak »

Offline Sokak

  • I speak a logs
  • Moderatore
  • Post: 4371
    • Ask Sokak
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #1 il: 14 Giugno 2011 18:03:50 »
E' possibile accedere al questionario intero online? Magari puoi farne una copia al di fuori del sito interessato e sostituirne solo il testo se non è roba che puoi pubblicare?

Offline lucasali

  • Moderatore
  • Post: 7493
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #2 il: 14 Giugno 2011 23:43:28 »
che errore ti da ff nella console degli errori?

Offline whitesockswolf

  • Post: 4
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #3 il: 20 Giugno 2011 19:02:45 »
Ciao,

inserisco qua il link alla pagina del questionario che non funziona.
http://whitemoon.iit.cnr.it:8080/questionario/questionario.php

Tale questionario è la parte finale di uno user test più completo.

Anche se la parte prima dello user test (qua omessa), passa un parametro a questa pagina, i problemi di interazione tramite tastiera a cui facevo riferimento non dipendono da quello.

Infatti con le versioni 3.6.x precedenti a Firefox 4 funziona comunque!

*****************************************************
Per quanto riguarda i messaggi della console degli errori, con le versioni precedenti alla versione 4 di Firefox non ve ne sono.

Mentre usando Firefox 4 compare questo nella console degli errori:

Citazione
Avviso: Il box XUL per l'elemento _moz_generated_content_after contiene un inline child #text, tutti i child verranno forzati in un blocco.
File sorgente: chrome://browser/content/browser.xul
Riga: 0
Avviso: Una stringa vuota è stata passata a getElementById().
File sorgente: chrome://browser/content/browser.xul
Riga: 0

Errore: document.getElementById("SiteAdvisor-TB" + nButtonID) is null
File sorgente: chrome://saff/content/saffplg.js
Riga: 165



Infatti interagendo con tastiera si blocca già al primo radio button Maschio / Femmina in quanto se seleziono Maschio o Femmina, non posso accedere al radio button relativo alla fascia età.
Nel caso in cui non seleziono nulla (fra maschio o femmina), ma continuo con il TAB per passare da un elemento all'altro, non compare alcun messaggio (in fondo dopo il submit) che dica "Attenzione definisci il tuo genere!".

Credo che il problema sia dovuto alla funzione getElementById() javascript.
Infatti ho messo un alert(...) per stampare la variabile invalid nella funzione checkValidity3(...) prima di if (invalid) {}, ma non appare niente.

Grazie per il vostro aiuto.

Offline lucasali

  • Moderatore
  • Post: 7493
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #4 il: 21 Giugno 2011 00:17:38 »
a me da questo errore:
Codice: [Seleziona]
Errore: preview is undefined
File sorgente: resource://gre/modules/WindowsPreviewPerTab.jsm
Riga: 380

Offline whitesockswolf

  • Post: 4
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #5 il: 22 Giugno 2011 16:13:33 »
Ciao lucasali,
e grazie per il tempo dedicato...

hai idea di cosa voglia dire?  :?

Cercando quel messaggio di errore su internet, da quello che ho capito sembra più un bug di windows
che non c'entra con il codice della pagina...

Citazione
Bug 563337 - Error: preview is undefined and Error: this.preview is undefined when last tab is closed under condition of browser.tabs.closeWindowWithLastTab is false

not only when closing last tab,
also while scrolling a page, close/open a tab.

 non so ... :shock:

Offline RNicoletto

  • Post: 2209
    • MondoWin
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #6 il: 22 Giugno 2011 21:55:01 »
Mentre usando Firefox 4 compare questo nella console degli errori:

Citazione
Avviso: Il box XUL per l'elemento _moz_generated_content_after contiene un inline child #text, tutti i child verranno forzati in un blocco.
File sorgente: chrome://browser/content/browser.xul
Riga: 0
Avviso: Una stringa vuota è stata passata a getElementById().
File sorgente: chrome://browser/content/browser.xul
Riga: 0

Errore: document.getElementById("SiteAdvisor-TB" + nButtonID) is null
File sorgente: chrome://saff/content/saffplg.js
Riga: 165

SiteAdvisor? Un momento, ma tu hai installato qualche add-on sul tuo profilo di Firefox? Hai già riprovato a testare il sito utilizzando un profilo pulito?

Offline whitesockswolf

  • Post: 4
Re: Strano comportamento di Firefox 4 con x/html e javascript
« Risposta #7 il: 24 Giugno 2011 16:23:43 »
Ciao RNicoletto,

SiteAdvisor è un componente aggiuntivo dell'antivirus McAfee per testare l'attendibilità dei siti.

Comunque ho disattivato tutti i componenti aggiuntivi, ma l'interazione via tastiera su questa pagina non funziona ugualmente.
(Ad ogni modo anche con tali componenti aggiuntivi, con la versione di Firefox precedente alla 4, funzionava).

Ho fatto anche una prova installando la nuova versione di Firefox 5, ma vi è lo stesso problema.  :(

0 Utenti e 2 Visitatori stanno visualizzando questo topic.