94
JavaScript and Accessibility: Creating interface Magic for Everyone

JavaScript and Accessibility: Creating Interface Magic for Everyone

Embed Size (px)

DESCRIPTION

In this talk I look at a few ways in which JavaScript actually helps make web sites more accessible despite the bad name it might have in some accessibility circles.

Citation preview

Page 1: JavaScript and Accessibility: Creating Interface Magic for Everyone

JavaScript and Accessibility:Creating interface Magic for Everyone

Page 2: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 3: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 4: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 5: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 6: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 7: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 8: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 9: JavaScript and Accessibility: Creating Interface Magic for Everyone

JavaScript and Accessibility:Creating interface Magic for Everyone

Page 11: JavaScript and Accessibility: Creating Interface Magic for Everyone

Myths and Misconceptions

Page 12: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

Myths and Misconceptions

Page 13: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

• “I can’t use JavaScript if I want it to be accessible”

Myths and Misconceptions

Page 14: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

• “I can’t use JavaScript if I want it to be accessible”

• “Screen readers don’t support JS”

Myths and Misconceptions

Page 15: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

• “I can’t use JavaScript if I want it to be accessible”

• “Screen readers don’t support JS”

• “Just use <noscript>...</noscript>”

Myths and Misconceptions

Page 16: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

• “I can’t use JavaScript if I want it to be accessible”

• “Screen readers don’t support JS”

• “Just use <noscript>...</noscript>”

• “when you use onclick, use onkeypress”

Myths and Misconceptions

Page 17: JavaScript and Accessibility: Creating Interface Magic for Everyone

• “people with disabilities turn JavaScript off”

• “I can’t use JavaScript if I want it to be accessible”

• “Screen readers don’t support JS”

• “Just use <noscript>...</noscript>”

• “when you use onclick, use onkeypress”

Myths and Misconceptions

false

Page 18: JavaScript and Accessibility: Creating Interface Magic for Everyone

To do this well...

Page 19: JavaScript and Accessibility: Creating Interface Magic for Everyone

• View accessibility as User Experience

• Understand that accessibility is just as much a design problem as it is a technical problem

• Open our minds to account for other assistive technology and disabilities, not just blind people using screen readers

To do this well...

Page 20: JavaScript and Accessibility: Creating Interface Magic for Everyone

Starting Points

Page 21: JavaScript and Accessibility: Creating Interface Magic for Everyone

POUR

Page 22: JavaScript and Accessibility: Creating Interface Magic for Everyone

erceivableperablenderstandableobust

POUR

Page 23: JavaScript and Accessibility: Creating Interface Magic for Everyone

Trap #1: Choosing the wrong controls

Page 24: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 25: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 26: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 27: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 28: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 29: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 30: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 31: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 32: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 33: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 34: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 35: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 36: JavaScript and Accessibility: Creating Interface Magic for Everyone

<button>Pan Up</button>

Page 37: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 38: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 39: JavaScript and Accessibility: Creating Interface Magic for Everyone

• certain elements take focus by default

<a href> <button> <input>

• can use tabindex=0 to make any element appear in the tab order (but if you’re doing this, ask yourself why? and maybe choose another element)

• often see onclick on random elements

<img> <tr> <td> <div>

Focusable Controls

Page 40: JavaScript and Accessibility: Creating Interface Magic for Everyone

Trap #2: Managing Focus/Linear Flow

Page 43: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

Page 44: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

Page 45: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

<a href=”#unamehelp”> ? </a>

Page 46: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

Page 47: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

<a href=”#unamehelp”> ? </a>

Page 48: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

Page 49: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

see the focus?

Page 50: JavaScript and Accessibility: Creating Interface Magic for Everyone

http://examples.simplyaccessible.com/context-help/

see the focus?

see the focus?

Page 51: JavaScript and Accessibility: Creating Interface Magic for Everyone

Manage the focus.

Page 52: JavaScript and Accessibility: Creating Interface Magic for Everyone

Manage the focus.

Page 55: JavaScript and Accessibility: Creating Interface Magic for Everyone

Manage the focus.

<a href=”#”>Share trips</a>

Page 56: JavaScript and Accessibility: Creating Interface Magic for Everyone

Manage the focus.

Page 57: JavaScript and Accessibility: Creating Interface Magic for Everyone

Manage the focus.

You’ll never do this, rig

ht?

Page 58: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 59: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 60: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 61: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 62: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 63: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 64: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 65: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 66: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 67: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 68: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 69: JavaScript and Accessibility: Creating Interface Magic for Everyone

Trap #3: Getting Trapped with the Keyboard

Page 70: JavaScript and Accessibility: Creating Interface Magic for Everyone

Anticipation

Page 71: JavaScript and Accessibility: Creating Interface Magic for Everyone

More anticipation...

Page 72: JavaScript and Accessibility: Creating Interface Magic for Everyone

So much anticipation!

Page 73: JavaScript and Accessibility: Creating Interface Magic for Everyone

Repetition: Don’t go on forever.

Page 74: JavaScript and Accessibility: Creating Interface Magic for Everyone

Repetition: Don’t go on forever.

You’ll never do this, rig

ht?

Page 75: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 76: JavaScript and Accessibility: Creating Interface Magic for Everyone

function keyDown(event) { // Prevent default keyboard action // (like navigating inside the page) return (fn(code, options.closeKeys) >= 0) ? close()  : (fn(code, options.nextKeys) >= 0) ? next()  : (fn(code, options.previousKeys) >= 0) ? previous()  : false;}

Page 77: JavaScript and Accessibility: Creating Interface Magic for Everyone

• usability issues

• MUST test for:

success case

error case

the “correction” case

not “killing” other keyboard functionality

Keyboard Interactivity

Page 78: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 79: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 80: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 81: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 82: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 83: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 84: JavaScript and Accessibility: Creating Interface Magic for Everyone

Bonus Round:How to Avoid the Turducken of Bad Design

Page 85: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 86: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 87: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 88: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 89: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 90: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 91: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 92: JavaScript and Accessibility: Creating Interface Magic for Everyone
Page 94: JavaScript and Accessibility: Creating Interface Magic for Everyone

Accessibility consulting, strategy and assessmentsAccessible development and remediation servicesTraining courses, workshops and conferences

simplyaccessible.com

[email protected](613) 599-9784

@feather (on twitter)

Derek Featherstone