Understanding WCAG 2.0

Skip to Content (Press Enter)

SCR37: Eszközfüggetlen párbeszédablakok kialakítása

Alkalmazás

Szkriptet alkalmazó HTML és XHTML.

Ez a technika az alábbiakra vonatkozik:

Leírás

A webszerkesztők gyakran alkalmaznak olyan párbeszédablakokat, amelyek nem a böngésző által biztosított felugró ablakokban jelennek meg. Ehhez a megoldáshoz általában a párbeszéd tartalmát egy olyan dobozban helyezik el, amelyet abszolút módon pozícionálnak a CSS stíluslapon. A megjelenítés rendjét a z-index értékével határozzák meg.

A hozzáférés biztosításához a párbeszédeknek az alábbi előírásokat kell teljesíteniük.

  1. A párbeszédet aktiváló szkriptet egy hivatkozásnak vagy gomb onclick eseményének kell vezérelnie.

  2. A párbeszédet tartalmazó dobozt közvetlenül az őt vezérlő elem mögé kell elhelyezni a dokumentum objektum modellben (DOM). A fókuszt a vezérlő elem fogja megtartani és a tartalom az előbbiek szerinti elhelyezése fogja biztosítani a tartalom megfelelő elhelyezkedését a képernyőolvasó olvasási sorrendjében, illetve a tabulálási rendben. A párbeszéd vizuális megjelenése abszolút módon bárhol pozícionálásra kerülhet a lapon. Ezt úgy is meg lehet oldani, hogy a párbeszéd a HTML-ben kerül megszerkesztésre és CSS-el kerül rejtésre, mint a lenti példában, vagy egy szkript segítségével közvetlenül az őt aktiváló elem mögé is beillesztésre kerülhet.

  3. A párbeszéd dobozon belül elhelyezkedő HTML-nek meg kell felelnie a tartalom többi részére is vonatkozó akadálymentesítési szabványoknak.

A párbeszédablak a fókusznak, illetve a hivatkozás aktivitásának megfelelő nyitása és csukása szintén egy szép, de nem kötelező megoldás.

Példák

1. példa: A párbeszédet nyitó választó gomb

Az alábbi példában a HTML tartalmazza a vezérlőelemet, ebben az esetben egy gombot, és egy doboz szolgál a párbeszéd kereteként.

A vezérlőelem jelen esetben egy gomb, a szkriptet pedig az onclick esemény aktiválja. Ez utóbbi küldi a megfelelő eseményt az operációs rendszernek és így a segítő technológia is észleli a DOM megváltozását.

Az alábbi példában szereplő párbeszédben szereplő küldés és törlés gombok egyszerűen elrejtik a párbeszédet tartalmazó dobozt.

Példa kód:

...
<button onclick="TogglePopup(event,true)"
        name="pop0001">Options</button>
<div class="popover" id="pop0001">
  <h3>Edit Sort Information</h3>
  <form action="default.htm" onsubmit="this.parentNode.style.display='none'; return false;" onreset="this.parentNode.style.display='none'; return false;">
    <fieldset>
      <legend>Sort Order</legend> 
      <input type="radio" name="order" id="order_alpha" /><label for="order_alpha">Alphabetical</label>
      <input type="radio" name="order" id="order_default" checked="true" /><label for="order_default">Default</label>
    </fieldset>
<div class="buttons">
  <input type="submit" value="OK" />
  <input type="reset" value="Cancel" />
</div>
</form>
</div>
...

A doboz, fejléc és űrlap elemek CSS-el kerültek megformázásra.

Példa kód:

...
a { color:blue; }
a.clickPopup img { border:none; width:0; }
div.popover { position:absolute; display:none; border:1px outset; background-color:beige; font-size:80%; background-color:#eeeeee; color:black; }
div.popover h3 { margin:0; padding:0.1em 0.5em; background-color:navy; color:white; }
#pop0001 { width:20em; }
#pop0001 form { margin:0; padding:0.5em; }
#pop0001 fieldset { margin-bottom:0.3em; padding-bottom:0.5em; }
#pop0001 input, #pop0001 label { vertical-align:middle; }
#pop0001 div.buttons { text-align:right; }
#pop0001 div.buttons input { width:6em; }
...

A felugró doboz megjelenítését és eltüntetését a szkript szabályozza.

Példa kód:

...
function TogglePopup(evt,show)
{
        HarmonizeEvent(evt);
        var src = evt.target;
        if ("click" == evt.type)
        {
                evt.returnValue = false;
        }
        var popID = src.getAttribute("name");
        if (popID)
        {
                var popup = document.getElementById(popID);
                if (popup)
                {
                        if (true == show)
                        {
                                popup.style.display = "block";
                        }
                        else if (false == show)
                        {
                                popup.style.display = "none";
                        }
                        else
                        {
                                popup.style.display = "block" == popup.style.display ? "none" : "block";
                        }
                        if ("block" == popup.style.display)
                        {
                                //window.alert(document.documentElement.scrollHeight);
                                popup.style.top = ((document.documentElement.offsetHeight - popup.offsetHeight) / 2 ) + 'px';
                                popup.style.left = ((document.documentElement.offsetWidth - popup.offsetWidth) / 2) + 'px';
                        }
                }
        }
}
function SubmitForm(elem)
{ 
        elem.parentNode.style.display='none'; 
        return false;
}
function ResetForm(elem)
{ 
        elem.parentNode.style.display='none'; 
        return false;
}
...

Az An options button that opens a dialog című részben megtekinthető egy működő példa.

Források

A források csak információs célokat szolgálnak, és csak angolul elérhetőek.

Ellenőrzések

Folyamat
  1. Találja meg a lapon az összes nem felugró ablakban megjelenő párbeszédet.

  2. Ellenőrizze, hogy a párbeszéd megnyitható-e a billentyűzettel történő kijelöléssel, illetve az enter gomb megnyomásával.

  3. Ellenőrizze, hogy a megnyitott párbeszéd a tabulálási rend következő helyét foglalja-e el.

  4. Ellenőrizze, hogy a párbeszédek a gombokra, vagy hivatkozásokra történő kattintáskor indulnak-e el.

  5. A DOM ellenőrzésére használt szkript alapú eszköz esetén ellenőrizze, hogy a párbeszéd a DOM mellett található-e.

Elvárható eredmények
  • A 2., 3., 4., és 5. ellenőrzés igazak.


Teljesítési feltételek: