A keresőmező akadálymentes keresése
A cikk témái:
Látó felhasználók számára általában nem okoz különösebb gondot a weboldalon elhelyezett keresőmező megtalálása. Ha felhasználóbarát a honlap, akkor elég egy gyors vizuális pásztázás, és a keresőmező jellegzetes megjelenése (például a nagyítót ábrázoló ikon) hamar észrevehető. Vak felhasználóknak azonban más módszerre van szükségük, hiszen esetükben a vizuális keresés kiesik. Ebben a cikkben bemutatok egy olyan egyszerű megoldást, amivel a keresőmező képernyőolvasóval történő megtalálását segíthetjük.
A „próba szerencse” módszer
A Magyarországi képernyőolvasók 2014-es felmérésén rákérdeztem, hogy az érintett felhasználók elsődlegesen milyen módszerrel próbálják megtalálni a weboldal keresőmezőjét. A válaszadók döntő többsége azt a bevált, ámbár „próba szerencse” módszert használja, hogy a képernyőolvasó által biztosított gyorsbillentyű segítségével odaugrik az oldal első szerkesztőmezőjére vagy az első űrlapjára.
Ez a módszer azért működik, mert a keresőmező többnyire valahol az oldal tetején helyezkedik el, így a HTML kódban is jellemzően ez az első szerkesztőmező. Ha viszont a sorrend nem így alakul, mert például egy hírlevélre történő feliratkozás, vagy egy nagyobb űrlap megelőzi, akkor ez a módszer nem vezet gyors eredményre. Zsákutcáról persze nem beszélhetünk, mert ilyen esetben tovább lehet lépkedni a következő mezőkre, bízva abban, hogy csak megkerül az a keresőmező. A felmérés válaszadóinak 13%-a eleve ezt a végiglépkedéses módszert alkalmazza.
Semmiképpen sem szabad azonban megfeledkezni arról, hogy ha a keresőmező nincs akadálymentesen lekódolva a HTML-ben, akkor a felhasználó könnyen zsákutcába kerülhet. Ugyanis a mezőre lépve csak arról értesül, hogy ez egy beviteli szerkesztőmező, de hogy pontosan mire szolgál, arról már nem. A helyes megoldás a mező akadálymentes címkézése egy olyan szöveggel, ami a keresésre utal.
A kérdés tehát az, hogy nincs-e valamilyen egzaktabb lehetőség a keresőmező egyértelmű beazonosítására.
Megoldás-e a search
típusú űrlapmező?
Felmerülhet, hogy a keresés célját betöltő input
szerkesztőmező type
attribútumát - a HTML5-ben megjelent - search
(kereső) értékre állítsuk, valahogy így:
<input type="search" name="kereso" id="kereso">
Azt gondolhatnánk, hogy a képernyőolvasó programok így már könnyen megkereshetik, és felkínálhatják a felhasználónak a search
típusú keresőmezőt. Sajnos azonban az aktuális képernyőolvasók ezt még nem tudják megtenni. Szerintem kérdéses, hogy megteszik-e valaha. Egyébként a HTML5 szabvány szerint a search
típusú mező tulajdonképpen egy hagyományos (text
típusú) mező, legfeljebb bizonyos platformokon a natív keresőmezőre jobban hasonlító megjelenési stílust, illetve viselkedést mutat.
Vagyis a search
típusú űrlapmező használata a cikk témája szempontjából nem jár különösebb előnnyel. Leszámítva talán azt, hogy létezik olyan képernyőolvasó (például a VoiceOver), amelyik a search
típusú mezőbe belépve - kapcsolódó címke nélkül is - azt olvassa be, hogy a keresett szöveg mezője
.
Használjuk a WAI-ARIA search
ugrópontot!
A HTML5-ben natív támogatást élvező WAI-ARIA szabvány bevezette az úgynevezett ugrópont (angolul landmark, a WAI-ARIA magyar fordításában iránypont) szereppel rendelkező régiók használatát. Ez azt jelenti, hogy a weboldal jellegzetes régiói, területei, szakaszai egy olyan tulajdonsággal ruházhatók fel, amely tulajdonság az oldalon belüli navigáció szempontjából betöltött szerepüket írja le. Ezen tulajdonság alapján a képernyőolvasó program (vagy más kisegítő technológia) összegyűjtheti és felkínálhatja az oldal jellegzetes helyeit, hogy a felhasználó ezek közül bármelyikhez gyorsan odaugorhasson.
A WAI-ARIA 1.0 verziójában definiált nyolc ugrópont szerep közül az egyik a search
, azaz kereső szerep. Ezzel a szereppel az a régió rendelkezhet, amelyik a weboldal keresőjét tartalmazza.
Az adott régiót leíró HTML jelölőelem kétféle módon kaphat meg egy ugrópont szerepet. Vagy a jelölőelem már eleve rendelkezik egy úgynevezett implicit szereppel, amit a HTML szabvány „gyárilag” definiál neki, vagy a role
attribútum segítségével a fejlesztőtől kapja meg. Előbbire példa a nav
jelölőelem, ami a weboldal navigációs régióját definiálja, és a fejlesztő beavatkozása nélkül, gyárilag a navigation
ugrópont szereppel rendelkezik.
A HTML-ben azonban jelenleg nincs olyan natív jelölőelem, ami a weboldal keresőterületét definiálná, és a search
szereppel már eleve rendelkezne. Nincs például külön <search>
jelölőelem. Éppen ezért keresnünk kell egy létező jelölőelemet, ami az oldalunkon a keresési régiót definiálja, és a role
attribútumon át megkaphatja a search
ugrópontot.
Lehet-e a search
ugrópont az input
mezőnél?
Ismét felmerülhet, hogy közvetlenül a keresőmezőt definiáló input
jelölőelemnek adjuk oda ezt a szerepet, mondjuk így:
<input role="search" type="search" name="kereso" id="kereso">
Ez azonban rossz megoldás.
A role
attribútummal ugyanis nem csak ugrópont szerepeket lehet definiálni, hanem widget és dokumentumstruktúra szerepeket is. A példában szereplő input
jelölőelemhez „gyárilag” a textbox
(szövegdoboz) widget szerep társul, hiszen ennek a jelölőelemnek a szemantikája pontosan az, hogy ez egy szövegbevitelre szolgáló elem. A példában tulajdonképpen felüldefiniáljuk ezt a natív szemantikát, és így az input elem „identitászavarba” kerül. Többet nem tekinti magát szövegdoboznak. Ennek előre nem várt mellékhatásai lehetnek mondjuk a képernyőolvasós használat során.
Sajnos a WAI-ARIA szabvány jelenleg nem engedi meg, hogy a role
attribútum többes értéket vegyen fel, vagyis egy elemhez ugrópont és widget szerepet is megadhassunk egyszerre.
És ha az űrlap kapja meg?
Valóban sokkal jobb megoldás, ha inkább a keresőmezőt tartalmazó űrlapnak (form
jelölőelemnek) adjuk oda a search
szerepet:
<form role="search">
Ez azért is lehet jó, mert a keresési régió - a kereső űrlapmezőn túl - egyéb elemeket, objektumokat is tartalmazhat, amelyek együttesen alkotják a keresőeszközt. Sőt, amikor a vak felhasználó a képernyőolvasójával megérkezik erre a területre, akkor plusz értesítést kap arról, hogy a keresési területre lépett.
A kérdés csak az, hogy ebben az esetben nem definiáljuk-e felül a form
jelölőelem eredeti szerepét, szemantikáját?
De igen.
A form
jelölőelem natív szerepe ugyanis a form
elnevezésű szerep, ami egyébként szintén ugrópont szerep. Nemrégiben kisebb szakmai vita alakult ki a web akadálymentességgel foglalkozó nemzetközi szakemberek körében, hogy nincs-e valamilyen ellentmondás a WAI-ARIA ezen területén. Én is osztom azt vélekedést, hogy valami nem stimmel, hiszen a WAI-ARIA egyik alapszabálya pont az, hogy natív szemantikai szereppel rendelkező jelölőelemnek nem adunk eltérő szerepet. A WAI-ARIA 1.0 szabványban azonban jelenleg az alábbi mondat szerepel:
A keresőeszközöknél a szerkesztőknek az általános
form
szerep helyett asearch
szerepet KELL használniuk.
Ha viszont a form
jelölőelem natív szerepét ilyen módon megváltoztatjuk, akkor potenciálisan fennállhat a veszély, hogy valamelyik képernyőolvasó programban ez kavarodást okoz. A WAI-ARIA szabványban a search
és a form
szerep között nincs alá- vagy fölérendeltségi kapcsolat, tehát nem mondhatjuk azt, hogy automatikusan minden search
szereppel rendelkező jelölőelem egyben form
is. Bízzunk benne, hogy egyszer talán tisztázódik ez a helyzet.
Frissítés (2016.június 15.): A helyzet tisztázódott. Úgy tűnik, hogy nem okoz akadálymentességi problémát, ha a form
megkapja a search
szerepet.
Semleges terepen
Amennyiben a honlapfejlesztés során úgy adódik, hogy például a vizuális megjelenés biztosítása miatt a keresőűrlapot egy div
jelölőelembe burkoljuk, vagy esetleg közvetlenül a form
jelölőelembe teszünk egy div
elemet, akkor nyugodtan adjuk oda a search
ugrópont szerepet ennek a div
elemnek. Mondjuk így:
<div role="search">
<form>
</form>
</div>
Mivel a div
jelölőelemnek gyárilag nincs semmilyen szemantikája (úgy is szoktuk mondani, hogy szemantika semleges), ezért nem áll fenn a veszélye annak, hogy a role
attribútummal felüldefiniálnánk valamit. Sőt, tulajdonképpen virtuálisan létrehozzuk a search
jelölőelemet.
Összegzés
A search
ugrópont definiálásával megadjuk a lehetőségét annak, hogy egy vak felhasználó bármikor egzakt módon megtalálhassa a keresőmezőt, függetlenül attól, hogy a képernyőolvasója segítségével éppen az oldal melyik részénél tartózkodik.
Ráadásul most is ki kell hangsúlyoznom, hogy potenciálisan más felhasználói csoportok (például a mozgássérült felhasználók) is használhatnák a navigáció e gyors módját, ha a böngészőprogramok valamilyen billentyűre, vagy egyéb vezérlőbe kivezetnék az ugrópontok közötti lépkedést.