Keyboard accessibility – You've been doing it wrong

104
Keyboard Accessibility You’ve been doing it wrong. Roel Van Gils ([email protected] ) vrijdag 24 juni 2011

description

Op de #fronteers meetup van 23 juni 2011 vertelde ik een uurtje over de typische valkuilen in verband met keyboard accessibility. Wat loopt er zoals mis en wat doe je eraan?

Transcript of Keyboard accessibility – You've been doing it wrong

Page 1: Keyboard accessibility – You've been doing it wrong

Keyboard AccessibilityYou’ve been doing it wrong.

Roel Van Gils ([email protected])

vrijdag 24 juni 2011

Page 2: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 3: Keyboard accessibility – You've been doing it wrong

Over Mij

★ Ik ben Roel

★ AnySurfer

★ Ik maak websites (in ruil voor geld)sinds 2000. Freelance sinds 2003.

vrijdag 24 juni 2011

Page 4: Keyboard accessibility – You've been doing it wrong

keyboard accessibility

★ Een fundamenteel onderdeel van een toegankelijke siteWCAG Guideline 2.1:“Keyboard Accessible: Make all functionality available from a keyboard”

★ Voor bezoekers met een motorische of visuele handicap, muishaters, mobiele (!) surfers en power users

★ Het lijkt een no-brainer, maar toch gaat het vaak fout

vrijdag 24 juni 2011

Page 5: Keyboard accessibility – You've been doing it wrong

Hoe voorkomen?MUIS AAN DE KANTeN TEST HET ZELF!

vrijdag 24 juni 2011

Page 6: Keyboard accessibility – You've been doing it wrong

Chrome / MAC

vrijdag 24 juni 2011

Page 7: Keyboard accessibility – You've been doing it wrong

SAFARI & FIREFOX / MAC

vrijdag 24 juni 2011

Page 8: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 9: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 10: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 11: Keyboard accessibility – You've been doing it wrong

/* http://meyerweb.com/eric/tools/css/reset/ *//* v1.0 | 20080212 */

/* remember to define focus styles! */:focus {! outline: 0;}

vrijdag 24 juni 2011

Page 12: Keyboard accessibility – You've been doing it wrong

/* http://meyerweb.com/eric/tools/css/reset/ v2.0b1 | 201101 NOTE: WORK IN PROGRESS USE WITH CAUTION AND TEST WITH ABANDON */

/* remember to define visible focus styles! :focus {! outline: ?????;} */

vrijdag 24 juni 2011

Page 13: Keyboard accessibility – You've been doing it wrong

Twee soorten mensen

★ Mensen die reset.css in al hun projecten gebruiken en zich niet bewust zijn van het probleem

★ Mensen die een afkeer hebben van de ‘dotted outline’ en doelbewust geen focus-stijlen gebruiken

vrijdag 24 juni 2011

Page 14: Keyboard accessibility – You've been doing it wrong

outline: none=

cursor: none

vrijdag 24 juni 2011

Page 15: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 16: Keyboard accessibility – You've been doing it wrong

a.button { display: block; width: 100px; height: 50px; background: url(button.png) 0 0; text-indent: -10000px;}

vrijdag 24 juni 2011

Page 17: Keyboard accessibility – You've been doing it wrong

Zonder extra CSS

a:focus { overflow: hidden;}

a:focus { outline: none; + extra stijlen!}

vrijdag 24 juni 2011

Page 18: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 19: Keyboard accessibility – You've been doing it wrong

a.button { display: block; width: 100px; height: 50px; background: url(button.sprite.png) 0 0; text-indent: -10000px;} a.button:hover, a.button:focus { outline: none; background: url(button.sprite.png) 0 -50px; }

vrijdag 24 juni 2011

Page 20: Keyboard accessibility – You've been doing it wrong

Vaak vergeten

★ Ook aanklikbare afbeeldingen (zoals banners) moeten een focus-indicatie krijgen.

★ <a href="…"><img src="…"></a>

★ Border, outline, glow, …

vrijdag 24 juni 2011

Page 21: Keyboard accessibility – You've been doing it wrong

<!-- ‘Fix’ voor IE 6 -->

<a href="…" onfocus="this.blur()">WTF?!</a>

vrijdag 24 juni 2011

Page 22: Keyboard accessibility – You've been doing it wrong

remove dotted outlines internet explorer

vrijdag 24 juni 2011

Page 23: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 24: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 25: Keyboard accessibility – You've been doing it wrong

onthoud★ Stijl je je :hover? Stijl dan ook je :focus

★ Wees creatief, maar vertrouw niet enkel op kleur

★ Vergeet gelinkte afbeeldingen niet!

★ Vertrouw geen forum posts uit 2003. Weet welke code je gebruikt (reset.css, grid frameworks en boilerplates)

vrijdag 24 juni 2011

Page 26: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 27: Keyboard accessibility – You've been doing it wrong

hoe werkt het ook alweer?

★ Eerst worden alle elementen mét tabindex overlopen (oplopend: 1 → 32767)

★ Daarna worden alle elementen zonder tabindex overlopen.

vrijdag 24 juni 2011

Page 28: Keyboard accessibility – You've been doing it wrong

<a href="…">Hoedje van papier</a><a tabindex=”4” href="…">Vier</a><a tabindex=”3” href="…">Drie</a><a tabindex=”2” href="…">Twee</a><a tabindex=”1” href="…">Een</a>

vrijdag 24 juni 2011

Page 29: Keyboard accessibility – You've been doing it wrong

Uw gegevens Gegevens van uw partner

Naam Naam

Voornaam Voornaam

Vegetarisch? Vegetarisch?✔ ✔

Verstuur

Home | Inschrijven | Over ons | Contact

Inschrijven

vrijdag 24 juni 2011

Page 30: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 31: Keyboard accessibility – You've been doing it wrong

Uw gegevens Gegevens van uw partner

Naam Naam

Voornaam Voornaam

Vegetarisch? Vegetarisch?✔ ✔

Verstuur

Home | Inschrijven | Over ons | Contact

Inschrijven

tabindex="1"

tabindex="2"

tabindex="3"

tabindex="4"

tabindex="5"

tabindex="6"

vrijdag 24 juni 2011

Page 32: Keyboard accessibility – You've been doing it wrong

wanneer nuttig?★ Als je broncode logisch is opgebouwd, is een

tabindex bijna altijd overbodig.

★ Nuttig voor

★ Legacy code (tabellen)

★ ‘Content first’ of navigatieblokken samenvoegen zonder de broncode overhoop te hoeven gooien

vrijdag 24 juni 2011

Page 33: Keyboard accessibility – You've been doing it wrong

tabindex‘GEHeime’ wapens

vrijdag 24 juni 2011

Page 34: Keyboard accessibility – You've been doing it wrong

tabindex="-1"

★ Voorkom dat een link of formulierelement gefocust kan worden

★ element.focus() blijft gewoon werken

★ In combinatie met JavaScript: een handig hulpmiddel voor het bouwen van UI widgets met ARIA-ondersteuning

★ Ook handig om dubbele links te filteren

vrijdag 24 juni 2011

Page 35: Keyboard accessibility – You've been doing it wrong

<h2><a href="/monopoly"></h2><a href=”/monopoly"><img src="…"></img></a>

<a href="/monopoly">Lees verder></a>

vrijdag 24 juni 2011

Page 36: Keyboard accessibility – You've been doing it wrong

tabindex="-1"tabindex="-1"

tabindex="-1"

tabindex="-1"

tabindex="-1"

tabindex="-1"

vrijdag 24 juni 2011

Page 37: Keyboard accessibility – You've been doing it wrong

<a href="/monopoly"> <h2> Zet Tongeren op het nieuwste spelbord van Monopoly </h2> <figure>  <img src="monopoly.png" alt="Monopoly" />  <figcaption>Spelbord</figcaption> </figure> <p> Tongeren komt in aanmerking om een plaats te veroveren op het spelbord van de nieuwste editie van Monopoly België. </p> <p class="more">Lees meer…</p></a>

vrijdag 24 juni 2011

Page 38: Keyboard accessibility – You've been doing it wrong

linktekst = optelsom van alle tekst (en alt-attributen tussen <a> en </a>

“Zet Tongeren op het nieuwste spelbord van Monopoly Monopoly Spelbord Tongeren komt in aanmerking om een plaats te veroveren op het spelbord van de

nieuwste editie van Monopoly België. Lees meer”

vrijdag 24 juni 2011

Page 39: Keyboard accessibility – You've been doing it wrong

<a href="/monopoly"> <h2> Zet Tongeren op het nieuwste spelbord van Monopoly </h2> <figure>  <img src="monopoly.png" alt="Monopoly" />  <figcaption>Spelbord</figcaption> </figure> <p> Tongeren komt in aanmerking om een plaats te veroveren op het <a href=”/spelbord”>spelbord</a> van de nieuwste editie van Monopoly België. </p> <p class="more">Lees meer…</p></a>

vrijdag 24 juni 2011

Page 40: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 41: Keyboard accessibility – You've been doing it wrong

1

2

3

4

vrijdag 24 juni 2011

Page 42: Keyboard accessibility – You've been doing it wrong

Internet Explorer 8 Firefox 4

Jaws 12

vrijdag 24 juni 2011

Page 43: Keyboard accessibility – You've been doing it wrong

DUS, BLOCK LEVEL <a>★ Lange (verwarrende) links in linklijst van

Jaws, NVDA en VoiceOver.

★ Nested links → ‘DOM Vomit’ → verwart screenreaders én je eigen scripts

★ Mogelijk alternatief: CSS (truc met position: absolute, z-index en overlappende transparante padding)

★ Gevolgen voor je SEO?

vrijdag 24 juni 2011

Page 44: Keyboard accessibility – You've been doing it wrong

tabindex="0"★ Geef alles focus: headings, tabelcellen, afbeeldingen etc.

zonder de tabvolgorde te beïnvloeden.

★ Nuttig om pagina-onderdelen te kunnen bereiken waar een actie aan vasthangt en die niet standaard bereikbaar zijn.

★ Voor ‘gewone’ links, gebruik je uiteraard <a href=”...”>

★ Ook gebruiken als je <span role="button"> gebruikt (!)

★ Addertje onder het gras: kunnen focussen betekent niet noodzakelijk kunnen activeren

vrijdag 24 juni 2011

Page 45: Keyboard accessibility – You've been doing it wrong

bereiken != activeren

★ Dat je op Enter kan klikken om op een link te klikken of op spatie om een checkbox aan te vinken, is een browser feature

★ Geef je een tabindex=”0” aan een *ander* element (div, span), dan wordt het *jouw* verantwoordelijkheid

★ KeyUp event 13 (Enter) is je vriend

vrijdag 24 juni 2011

Page 46: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 47: Keyboard accessibility – You've been doing it wrong

$.fn.fixclick = function() { $(this) .attr('tabindex','0') .keyup(function(e) { if (e.keyCode == 13) $(this).click(); });};

vrijdag 24 juni 2011

Page 48: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 49: Keyboard accessibility – You've been doing it wrong

wat is WAI-ARIA?

★ Web Acessibility Initiative - Accessible Rich Internet Applications

★ Sinds 18 januari: W3C Candidate Recommendation

★ Een set afspraken (classNames) om de rol, de status en de eigenschappen van custom UI widgets kenbaar te maken aan AT

★ Een extra laag je semantiek(zoals microformats)

vrijdag 24 juni 2011

Page 50: Keyboard accessibility – You've been doing it wrong

voorbeelden

★ Roles: role="…"

alert, button, dialog, menu, slider, tab…

★ States: aria-…="…"

required, busy,live,selected, describedby…

vrijdag 24 juni 2011

Page 51: Keyboard accessibility – You've been doing it wrong

In de praktijk

★ Dezelfde <ul> kan een lijst met tabbladen, een tree view of zelfs een volume slider zijn. Met de juiste role en state kondigt een screenreader de juiste zaken aan.

★ Het enige wat je screenreader doet, is switchen naar Application mode.

vrijdag 24 juni 2011

Page 52: Keyboard accessibility – You've been doing it wrong

BROWSE-modus★ Je surft met een ‘onzichtbare cursor’ op een virtuele,

vereenvoudigde kopie van het DOM

★ Alle toetsaanslagen gaan naar de screenreader

★ h = volgende heading

★ u = volgende niet-bezochte link

★ v = volgende bezochte link

★ → = volgende letter (of woord)

★ ↓ = volgende ‘lijn’ (meestal DOM-node)

★ etc.

vrijdag 24 juni 2011

Page 53: Keyboard accessibility – You've been doing it wrong

Applicatie-modus★ Ook wel ‘Forms mode’ of ‘Focus mode’ genoemd

★ Toetsaanslagen gaan gewoon naar de browser, maar er is wel audio- en braille-feedback.

★ De screenreader beslist zelf wanneer er geschakeld moet worden tussen browse- en applicatiemodus. Bvb.:

★ Als je in een formulierveld terecht komt

★ Als je in een ARIA-enabled widget terechtkomt

★ Ah ja, want anders worden je keyUp() events niet gedetecteerd en kan je geen letter h of l intikken in een tekstveld etc.

vrijdag 24 juni 2011

Page 54: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 55: Keyboard accessibility – You've been doing it wrong

<div id="tabs"> <ul class="tabsList"> <li id="tab-first" class="current">Eerste Tab</li> <li id="tab-second">Tweede Tab</li> <li id="tab-third">Derde Tab</li> </ul> <div class="tabPanel" style="display: block;"> <h1>Dit is de titel van het eerste tabblad</h1> <p>…</p> </div> <div class="tabPanel" style="display: block;"> <h1>Dit is de titel van het tweede tabblad</h1> <p>…</p> </div> <div class="tabPanel" style="display: block;"> <h1>Dit is de titel van het derder tabblad</h1> <p>…</p> </div></div>

vrijdag 24 juni 2011

Page 56: Keyboard accessibility – You've been doing it wrong

<div id="tabs"> <ul class="tabsList" role="tablist"> <li id="tab-first" role="tab" aria-selected="true” class="current">Eerste Tab</li> <li id="tab-second" role="tab" aria-selected="false">Tweede Tab</li> <li id="tab-third" role="tab" aria-selected="false">Derde Tab</li> </ul> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: block;" aria-labelledby="tab-first"> <h1>Dit is de titel van het eerste tabblad</h1> <p>…</p> </div> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: none;" aria-labelledby="tab-second"> <h1>Dit is de titel van het tweede tabblad</h1> <p>…</p> </div> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: none;" aria-labelledby="tab-third"> <h1>Dit is de titel van het derder tabblad</h1> <p>…</p> </div></div>

vrijdag 24 juni 2011

Page 57: Keyboard accessibility – You've been doing it wrong

<div id="tabs"> <ul class="tabsList" role="tablist"> <li id="tab-first" role="tab" aria-selected="true" tabindex="0” class="current">Eerste Tab</li> <li id="tab-second" role="tab" aria-selected="false" tabindex="-1">Tweede Tab</li> <li id="tab-third" role="tab" aria-selected="false" tabindex="-1">Derde Tab</li> </ul> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: block;" aria-labelledby="tab-first"> <h1>Dit is de titel van het eerste tabblad</h1> <p>…</p> </div> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: none;" aria-labelledby="tab-second"> <h1>Dit is de titel van het tweede tabblad</h1> <p>…</p> </div> <div class="tabPanel" role="tabpanel" aria-hidden="false" style="display: none;" aria-labelledby="tab-third"> <h1>Dit is de titel van het derder tabblad</h1> <p>…</p> </div></div>

vrijdag 24 juni 2011

Page 58: Keyboard accessibility – You've been doing it wrong

Firefox 4 & Jaws 12

vrijdag 24 juni 2011

Page 59: Keyboard accessibility – You've been doing it wrong

DUS

★ ARIA is geen magische oplossing

★ Je moet nog steeds zelf je keyUp() events scripten (maar dat deed je sowieso al voor keyboard users *zonder* screenreader!)

★ ARIA helpt screenreaders alleen door:

★ naar applicatiemodus te switchen

★ Nuttige semantische info te communiceren aan de gebruiker

vrijdag 24 juni 2011

Page 60: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 61: Keyboard accessibility – You've been doing it wrong

het probleem

★ In IE (<object>) en FF 4 (<embed>) kan je wel *in* een Flash-object tabben

★ In andere browsers moet je op het object klikken (met de muis!) voor je er met het toetsenbord in kan navigeren

★ Sowieso beland je in een eindeloze loop *binnen* het Flash-object (als deze hotspots bevat tenminste)

vrijdag 24 juni 2011

Page 62: Keyboard accessibility – You've been doing it wrong

1

3

4

2

65

8 9

10

7

Text

vrijdag 24 juni 2011

Page 63: Keyboard accessibility – You've been doing it wrong

workaround

★ Geef het Flash-object een tabindex="0" en plaats een verborgen link (met een id) net boven en onder het Flash-object

★ Gebruik SWFFocus.as (ActionScript class) in je FLA-project

★ Die detecteert het einde van een tabcyclus en voert een een stukje JavaScript (focus()) uit op de webpagina

vrijdag 24 juni 2011

Page 64: Keyboard accessibility – You've been doing it wrong

SWFFocus.as

★ Meer info en download: http://www.w3.org/TR/WCAG-TECHS/FLASH17.html

★ Probleem: het werkt enkel met je eigen Flash movies

★ Het is een hack

vrijdag 24 juni 2011

Page 65: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 66: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 67: Keyboard accessibility – You've been doing it wrong

Mogelijkheid 1

★ Voeg <button>’s toe onder je filmpje

★ Gebruik de YouTube of DailyMotion API voor play, pause, rewind en om het volume te regelen.

★ Stijl de <button>’s en positioneer ze netjes bovenop de Flash controls (gebruik een wrapper <div> als positioning context)

vrijdag 24 juni 2011

Page 70: Keyboard accessibility – You've been doing it wrong

HTML 5 video?

★ Native controls zijn in alle browsers behoorlijk toegankelijk

★ … behalve in Safari 5 :( Kwestie van tijd

★ Maar! Je kan de knoppen wel scripten natuurlijk :)

★ DOEN!

vrijdag 24 juni 2011

Page 71: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 72: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 73: Keyboard accessibility – You've been doing it wrong

<p class="skiplink"><a href="#inhoud">Naar inhoud</a></p>

<nav> <ul> <li><a href="…">Lorem</a></li> <li><a href="…">Ipsum</a></li> <li><a href="…">Dolor</a></li> </ul></nav>

<section id="content"> <h1>Ah, de échte inhoud!</h1> <p>Etiam porta sem malesuada magna mollis euismod.</p></section>

vrijdag 24 juni 2011

Page 74: Keyboard accessibility – You've been doing it wrong

<p class="skiplink"><a href="#navigatie">Naar inhoud</a></p>

<section> <h1>Content first? Beter voor je SEO?</h1> <p>Etiam porta sem malesuada magna mollis euismod.</p></section>

<nav id="navigatie”> <ul> <li><a href="…">Lorem</a></li> <li><a href="…">Ipsum</a></li> <li><a href="…">Dolor</a></li> </ul></nav>

vrijdag 24 juni 2011

Page 75: Keyboard accessibility – You've been doing it wrong

de waarheid over skip links

★ Blinden hebben geen skip links nodig op voowaarde dat je pagina netjes is opgebouwd (koppen en lijsten)

★ Toch kunnen ze nuttig zijn! Maak ze dan wel voor iedereen zichtbaar (voor mobiele surfers, voor slechtzienden) of desnoods zichtbaar bij :focus

vrijdag 24 juni 2011

Page 76: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 77: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 78: Keyboard accessibility – You've been doing it wrong

Don’t 1/4select="multiple"

vrijdag 24 juni 2011

Page 79: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 80: Keyboard accessibility – You've been doing it wrong

<select multiple> <optgroup label="Justitie"> <option value="1">Veiligheid</option> <option value="2">Privacy</option> <option value="3">Organisatie</option> <option value="4">Slachtoffers</option> </optgroup></select>

vrijdag 24 juni 2011

Page 81: Keyboard accessibility – You've been doing it wrong

<fieldset> <legend>Justitie</legend> <label> <input type="checkbox" /> Veiligheid </label> <label> <input type="checkbox" /> Privacy </label> <label> <input type="checkbox" /> Organisatie </label> <label> <input type="checkbox" /> Slachtoffers </label></fieldset>

vrijdag 24 juni 2011

Page 82: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 83: Keyboard accessibility – You've been doing it wrong

Don’t 2/4accesskeys

vrijdag 24 juni 2011

Page 84: Keyboard accessibility – You've been doing it wrong

<nav> <ul> <li> <a accesskey="h" href="/">Home</a> </li> <li> <a accesskey="d" href="/diensten">Home</a> </li> <li> <a accesskey="c" href="/contact">Contact</a> </li> </ul></nav>

vrijdag 24 juni 2011

Page 85: Keyboard accessibility – You've been doing it wrong

Problemen

★ Geen afspraken of standaarden★ Welke modifier keys?★ Welke accesskeys voor welk soort links?

★ Vroeg of laat conflicteren ze★ Met browser shortcuts★ Met AT shortcuts★ Met keyUp events

vrijdag 24 juni 2011

Page 86: Keyboard accessibility – You've been doing it wrong

Alt Alt + F, Alt + E, Alt + V, Al + D, …

Shfit + Alt ✔

Ctrl Ctrl + C, Ctrl + V, …

Shift + Esc ✔

Ctrl + ⌥ ✔

TOETSENCOMBINATIEbrowser CONFLICTEN

vrijdag 24 juni 2011

Page 87: Keyboard accessibility – You've been doing it wrong

meer problemen

★ In alle browsers, behalve Opera, wordt voorrang gegeven aan accesskeys

★ Geen enkele browser, behalve Opera, nodigt ze (native) aan.

★ Language issues(Nederlands: Alt + e, Alt +w, Alt + b, Alt + f, Alt + x, Alt + h)

vrijdag 24 juni 2011

Page 88: Keyboard accessibility – You've been doing it wrong

accesskeys = flawed BY DESIGN

vrijdag 24 juni 2011

Page 89: Keyboard accessibility – You've been doing it wrong

en keyup() events dan?

★ Maak ze optioneel (zoals Gmail het doet), want ze kunnen ook conflicteren met AT shortcuts. Neem ‘u’:

★ Gmail → Terug naar lijst met conversaties

★ Jaws → Volgende niet-bezochte link

★ Uitzondering: Esc (voor lightboxes) en als onderdeel van ARIA widgets

vrijdag 24 juni 2011

Page 90: Keyboard accessibility – You've been doing it wrong

Don’t 3/4jump menus

vrijdag 24 juni 2011

Page 91: Keyboard accessibility – You've been doing it wrong

<script language="JavaScript">function MM_jumpMenu(targ,selObj,restore){ //v3.0eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");if (restore) selObj.selectedIndex=0;}

</script> <select name="select" onChange="MM_jumpMenu('parent',this,1)"> <option value="/nl" lang=”nl” hreflang=”nl”>

Nederlands</option>

<option value="/fr" lang=”fr” hreflang=”fr”>Français

</option> <option value="/en" lang=”en” hreflang=”en”>

English</option>

</select>

! !

vrijdag 24 juni 2011

Page 92: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 93: Keyboard accessibility – You've been doing it wrong

Dus

★ Neem niet klakkeloos scripts over (zeker geen DreamWeaver-scripts)

★ Voorzie een bevestigingsknop bij een jump menu.

★ Of gebruik geen jump menu’s

vrijdag 24 juni 2011

Page 94: Keyboard accessibility – You've been doing it wrong

Don’t 4/4Gewoon is al gek genoeg

vrijdag 24 juni 2011

Page 95: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 96: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 97: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 98: Keyboard accessibility – You've been doing it wrong

DUS

★ Liever niet.

★ Als je klant blijft aandringen:

★ Met CSS (en/of JavaScript) kan je ieder uitklapmenu toetsenbordvriendelijk maken.

★ Maar is dat wel altijd nodig? Niet als het submenu herhaald wordt op de onderliggende pagina.

vrijdag 24 juni 2011

Page 99: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 100: Keyboard accessibility – You've been doing it wrong

DUS

★ Fully keyboard accessible? Niet nodig!

★ Vermeld de datumnotatie (zoals dd/mm/jjjj)

★ Laat mensen een datum intikken (geen disabled-attribuut op het tekstveld!)

★ Go native (HTML 5), maar zorg voor een fallback

vrijdag 24 juni 2011

Page 101: Keyboard accessibility – You've been doing it wrong

★ Stay focused★ tabindex★ roles & states★ keyboard trap★ video controls★ skip links★ don’t!★ BUT, WAIT?★ CONCLUSIE & VRAGEN

vrijdag 24 juni 2011

Page 102: Keyboard accessibility – You've been doing it wrong

vrijdag 24 juni 2011

Page 103: Keyboard accessibility – You've been doing it wrong

1. :focus {outline: none} is evil2. Screenreaders lezen je DOM, niet je HTML-bron3. tabindex="0" en tabindex="-1" zijn je vrienden4. Bereikbaar != activeerbaar (gebruik keyUp

event 13, 37, 38, 39 en 40)5. WAI-ARIA lost niet al je problemen op6. De enige écht toegankelijke video controls zijn

native of zitten buiten het Flash-object7. Maak je skip links zichtbaar8. Accesskeys zijn waardeloos9. Gebruik je gezond verstand10. Twijfels? Muis aan de kant en test het zelf

vrijdag 24 juni 2011

Page 104: Keyboard accessibility – You've been doing it wrong

?vrijdag 24 juni 2011