SlideShare une entreprise Scribd logo
1  sur  41
Accessibility with SPA's
CanberraJS
The web landscape
We're using more complex Javascript frontend frameworks to generate
web content. Accessibility isn't made more difficult, the same rules
still apply.
Why accessibility?
Because it’s the right thing to do
Because its not hard or expensive
Because of Government, Government digital services have to be
accessible to WCAG 2.0 AA
A recap on WCAG 2/2.1
International best practice standard to make websites accessible
A
AA
AAA
most comprehensive and requires more work to
bring a website up to speed
basic level of accessibility it'll help some people and it
doesn’t take much overhead
Is the compromise between effort and accessibility
Websites
Generally straightforward to make a website accessible. They're static
with little functionality.
Web applications
More challenging to make accessible. Handling complex functionality
means we need to put greater emphasis into adding the accessibility.
Mythbusting
Javascript frameworks don't
make a web application any
more or any less accessible
Accessibility in React
"React fully supports building accessible websites, often by using
standard HTML techniques"
https://reactjs.org/docs/accessibility.html
Accessibility in Angular 7
"Create accessible applications with ARIA-enabled components,
developer guides, and built-in a11y test infrastructure"
https://angular.io/features
Beware
Even though a framework has good support for accessibility doesn’t
mean you don’t need to do anything.
Implementation is key
The accessibility is solely down to how it's implemented, if your code
has poor accessibility support the outcome won't be great.
Single Page Apps
Are more complicated, which means the accessibility has to be more
involved.
Prioritising effort
Focus less about colour contrast, link text and correct heading
structure.
Rules to develop to
1. Write HTML according to specifications
2. Make elements focusable from the keyboard
3. Page updates need to be announced
1. Write HTML according to specs
Use elements the correct way, if you need a button use a button.
Building your own elements
Means you need to add accessibility behaviour back onto the controls,
it’s a massive headache and it takes time. Do you need to make
custom controls?
Building your own elements
<span>Click Me</span>
<div>Click Me</div>
SPAN and DIV elements have no default behaviour, it needs to be built
in.
Building a button
<div role="button">Click Me</div>
+ Add the ARIA role
Building a button
<div role="button" tabindex="0">Click Me</div>
+ Add the ARIA role
+ Add the tabindex
Building a button
<div role="button" tabindex="0">Click Me</div>
+ Add the ARIA role
+ Add the tabindex
+ Add the style change
Or just use a button
<button>Click Me</button>
Semantic elements
They just work, assistive technology interprets them correctly. No extra
work is needed.
The trade off
Semantic interface = works as intended
Custom interface = adding accessibility back
2. Keyboard focusable
Make everything focusable from the keyboard, some people may use
the keyboard over the mouse.
Use the tabindex attribute wisely
Can be used to reorder the entire keyboard tab sequence if not careful.
If you use regular elements in a regular way, this behaviour is already
included by default.
Positioning
<a href="blah.html tabindex="10">blah</a>
Refers to the tab position of the element on the page
Pick a number
tabindex="0" element appears in the regular keyboard sequence
tabindex="-1" element is hidden from the keyboard sequence
tabindex="1" + goodbye regular keyboard sequence!
Don’t do this
<a href="blah.html" tabindex="1">blah</a>
Or this
<a href="blah.html" tabindex="10">blah</a>
Or even this
<a href="blah.html" tabindex="1010">blah</a>
Tabindex of +1 and above
<a href="blah.html"
tabindex="1">blah</a>
3. Updates need to be announced
Announce the change if the page updates.
What's it doing?
SPA's may not always trigger a full page refresh, if a user is vision
impaired they won't know a change has occurred.
Introducing ARIA
Set of attributes which generate behaviour in assistive technology to
announce changes to help a web application work better for AT users.
Need to announce an update?
An aria live region can trigger a screen reader to announce new
content.
Need to announce an update?
<div aria-live="polite">
Content to announce
</div>
ARIA live region
q
Content updated
Updating page content
static content
"Content updated"X
Automate the heavy lifting
Reach Router for React
"Router manages the focus of your app on route transitions. There’s
nothing you have to do about it, it just happens."
LiveAnnouncer Angular Material
"LiveAnnouncer is used to announce messages for screen-reader users
using an aria-live region"
This is just scratching the surface
Accessibility is complex and challenging, different browsers and screen
readers will affect end results.
Focus on the hard and difficult
• Use semantic elements
• Don’t alter the tabindex
• Announce updates with ARIA live regions
For more information
Get the code at github.com/canaxess/presentations
navigate to CanberraJS
www.canaxess.com.au
ross.mullen@canaxess.com.au
@MrRossMullen

Contenu connexe

Tendances

EXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSEXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSjohnsmith4989
 
Using the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsUsing the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsbwebster719
 
Online mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseOnline mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseNguyễn Bá Thành
 
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWorking with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWebflow
 
Patron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarPatron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarRobert Crane
 
How to submit sitemap by Ravi
How to submit sitemap by RaviHow to submit sitemap by Ravi
How to submit sitemap by RaviNeha Nayak
 
Creating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationCreating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationSagar Kalkhair
 
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterForms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterWebflow
 
How to Go Web Site Live in China?
How to Go Web Site Live in China?How to Go Web Site Live in China?
How to Go Web Site Live in China?Jordan Chung
 
SharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerSharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerMani Kapali
 
Using Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillUsing Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillCharles Ramos
 
16 asp.net session23
16 asp.net session2316 asp.net session23
16 asp.net session23Vivek chan
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets Ana Uy
 
Asana how-to-guide-vaninja
Asana how-to-guide-vaninjaAsana how-to-guide-vaninja
Asana how-to-guide-vaninjaAbigail De Mesa
 

Tendances (18)

EXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOSEXTERNAL IMAP CLIENT –IOS
EXTERNAL IMAP CLIENT –IOS
 
Using the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordingsUsing the Adobe Connect API - finding unused recordings
Using the Adobe Connect API - finding unused recordings
 
Online mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabaseOnline mobile game server use Firebase realtime aatabase
Online mobile game server use Firebase realtime aatabase
 
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo TheaterWorking with APIs as a no-coder - No Code Conf 2019 Demo Theater
Working with APIs as a no-coder - No Code Conf 2019 Demo Theater
 
Patron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 WebinarPatron Power Platform Community November 2021 Webinar
Patron Power Platform Community November 2021 Webinar
 
How to submit sitemap by Ravi
How to submit sitemap by RaviHow to submit sitemap by Ravi
How to submit sitemap by Ravi
 
9 word press 2c
9   word press 2c9   word press 2c
9 word press 2c
 
WordPress and IoT
WordPress and IoTWordPress and IoT
WordPress and IoT
 
Creating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creationCreating an app on Ribily Part 3 flow creation
Creating an app on Ribily Part 3 flow creation
 
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo TheaterForms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
Forms + Zaps = No Code Apps - No Code Conf 2019 Demo Theater
 
Introduction to script lab
Introduction to script labIntroduction to script lab
Introduction to script lab
 
How to Go Web Site Live in China?
How to Go Web Site Live in China?How to Go Web Site Live in China?
How to Go Web Site Live in China?
 
ReviewTrackers + Zapier
ReviewTrackers + ZapierReviewTrackers + Zapier
ReviewTrackers + Zapier
 
SharePoint Staff Vacation Planner
SharePoint Staff Vacation PlannerSharePoint Staff Vacation Planner
SharePoint Staff Vacation Planner
 
Using Parse Server to send emails via Mandrill
Using Parse Server to send emails via MandrillUsing Parse Server to send emails via Mandrill
Using Parse Server to send emails via Mandrill
 
16 asp.net session23
16 asp.net session2316 asp.net session23
16 asp.net session23
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets
 
Asana how-to-guide-vaninja
Asana how-to-guide-vaninjaAsana how-to-guide-vaninja
Asana how-to-guide-vaninja
 

Similaire à Accessibility with Single Page Apps

State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueDries Buytaert
 
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Martin Leyrer
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Lachlan Hardy
 
A Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsA Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsMikey Ilagan
 
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce Configero
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-eehomeworkping3
 
Getting started with html5
Getting started with html5Getting started with html5
Getting started with html5Suresh Kumar
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and RunningCodemotion
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB
 
Building accessible web components without tears
Building accessible web components without tearsBuilding accessible web components without tears
Building accessible web components without tearsRuss Weakley
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Wahyu Putra
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5Manav Prasad
 

Similaire à Accessibility with Single Page Apps (20)

Sharepoint
SharepointSharepoint
Sharepoint
 
Sharepoint
SharepointSharepoint
Sharepoint
 
Sharepoint
SharepointSharepoint
Sharepoint
 
State of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon PragueState of Drupal keynote, DrupalCon Prague
State of Drupal keynote, DrupalCon Prague
 
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
Accessible Websites With Lotus Notes/Domino, presented at the BLUG day event,...
 
Chapter 25
Chapter 25Chapter 25
Chapter 25
 
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch TutorialMongoDB.local Dallas 2019: MongoDB Stitch Tutorial
MongoDB.local Dallas 2019: MongoDB Stitch Tutorial
 
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8Welcome to IE8 - Integrating Your Site With Internet Explorer 8
Welcome to IE8 - Integrating Your Site With Internet Explorer 8
 
8fig
8fig8fig
8fig
 
A Primer on Web Accessibility for Teams
A Primer on Web Accessibility for TeamsA Primer on Web Accessibility for Teams
A Primer on Web Accessibility for Teams
 
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
URL Hacking 101: An Easy Way to Streamline Processes in Salesforce
 
235042632 super-shop-ee
235042632 super-shop-ee235042632 super-shop-ee
235042632 super-shop-ee
 
Html 5
Html 5Html 5
Html 5
 
Getting started with html5
Getting started with html5Getting started with html5
Getting started with html5
 
HTML5 Up and Running
HTML5 Up and RunningHTML5 Up and Running
HTML5 Up and Running
 
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch TutorialMongoDB.local Seattle 2019: MongoDB Stitch Tutorial
MongoDB.local Seattle 2019: MongoDB Stitch Tutorial
 
Building accessible web components without tears
Building accessible web components without tearsBuilding accessible web components without tears
Building accessible web components without tears
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
 
Xhtml validation
Xhtml validationXhtml validation
Xhtml validation
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5
 

Plus de Ross Mullen

Creating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulCreating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulRoss Mullen
 
Core accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesCore accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesRoss Mullen
 
Whats new in WCAG 2.1
Whats new in WCAG 2.1Whats new in WCAG 2.1
Whats new in WCAG 2.1Ross Mullen
 
Making chatbots accessible - DTA
Making chatbots accessible - DTAMaking chatbots accessible - DTA
Making chatbots accessible - DTARoss Mullen
 
Making chatbots accessible
Making chatbots accessibleMaking chatbots accessible
Making chatbots accessibleRoss Mullen
 
Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Ross Mullen
 
Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Ross Mullen
 

Plus de Ross Mullen (7)

Creating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the BeautifulCreating Website Status Updates for the Blind, the Bold and the Beautiful
Creating Website Status Updates for the Blind, the Bold and the Beautiful
 
Core accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sitesCore accessibility patterns for better Joomla! sites
Core accessibility patterns for better Joomla! sites
 
Whats new in WCAG 2.1
Whats new in WCAG 2.1Whats new in WCAG 2.1
Whats new in WCAG 2.1
 
Making chatbots accessible - DTA
Making chatbots accessible - DTAMaking chatbots accessible - DTA
Making chatbots accessible - DTA
 
Making chatbots accessible
Making chatbots accessibleMaking chatbots accessible
Making chatbots accessible
 
Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015Accessible UX in Government - OZeWAI 2015
Accessible UX in Government - OZeWAI 2015
 
Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...Challenges with third party tools in Federal Government web apps - A11y Camp ...
Challenges with third party tools in Federal Government web apps - A11y Camp ...
 

Dernier

Development Lifecycle.pptx for the secure development of apps
Development Lifecycle.pptx for the secure development of appsDevelopment Lifecycle.pptx for the secure development of apps
Development Lifecycle.pptx for the secure development of appscristianmanaila2
 
Statistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfStatistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfOndejSur
 
The Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyThe Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyDamar Juniarto
 
Premier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfPremier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfappinfoedgeca
 
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkkaudience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkklolsDocherty
 
Bug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideBug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideVarun Mithran
 
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresenceCyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresencePC Doctors NET
 
Production 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxProduction 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxChloeMeadows1
 
I’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 ShirtI’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 Shirtrahman018755
 
How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?Linksys Velop Login
 
iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebiThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebJie Liau
 
Pvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan
 
Thank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsThank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsrahman018755
 
Reggie miller choke t shirtsReggie miller choke t shirts
Reggie miller choke t shirtsReggie miller choke t shirtsReggie miller choke t shirtsReggie miller choke t shirts
Reggie miller choke t shirtsReggie miller choke t shirtsrahman018755
 
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.Tortogel
 

Dernier (16)

Development Lifecycle.pptx for the secure development of apps
Development Lifecycle.pptx for the secure development of appsDevelopment Lifecycle.pptx for the secure development of apps
Development Lifecycle.pptx for the secure development of apps
 
Statistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfStatistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdf
 
GOOGLE Io 2024 At takes center stage.pdf
GOOGLE Io 2024 At takes center stage.pdfGOOGLE Io 2024 At takes center stage.pdf
GOOGLE Io 2024 At takes center stage.pdf
 
The Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyThe Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case Study
 
Premier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfPremier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdf
 
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkkaudience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
 
Bug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideBug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's Guide
 
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresenceCyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
 
Production 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxProduction 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptx
 
I’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 ShirtI’ll See Y’All Motherfuckers In Game 7 Shirt
I’ll See Y’All Motherfuckers In Game 7 Shirt
 
How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?
 
iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWebiThome_CYBERSEC2024_Drive_Into_the_DarkWeb
iThome_CYBERSEC2024_Drive_Into_the_DarkWeb
 
Pvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdf
 
Thank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirtsThank You Luv I’ll Never Walk Alone Again T shirts
Thank You Luv I’ll Never Walk Alone Again T shirts
 
Reggie miller choke t shirtsReggie miller choke t shirts
Reggie miller choke t shirtsReggie miller choke t shirtsReggie miller choke t shirtsReggie miller choke t shirts
Reggie miller choke t shirtsReggie miller choke t shirts
 
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.
TORTOGEL TELAH MENJADI SALAH SATU PLATFORM PERMAINAN PALING FAVORIT.
 

Accessibility with Single Page Apps

  • 2. The web landscape We're using more complex Javascript frontend frameworks to generate web content. Accessibility isn't made more difficult, the same rules still apply.
  • 3. Why accessibility? Because it’s the right thing to do Because its not hard or expensive Because of Government, Government digital services have to be accessible to WCAG 2.0 AA
  • 4. A recap on WCAG 2/2.1 International best practice standard to make websites accessible A AA AAA most comprehensive and requires more work to bring a website up to speed basic level of accessibility it'll help some people and it doesn’t take much overhead Is the compromise between effort and accessibility
  • 5. Websites Generally straightforward to make a website accessible. They're static with little functionality.
  • 6. Web applications More challenging to make accessible. Handling complex functionality means we need to put greater emphasis into adding the accessibility.
  • 7. Mythbusting Javascript frameworks don't make a web application any more or any less accessible
  • 8. Accessibility in React "React fully supports building accessible websites, often by using standard HTML techniques" https://reactjs.org/docs/accessibility.html
  • 9. Accessibility in Angular 7 "Create accessible applications with ARIA-enabled components, developer guides, and built-in a11y test infrastructure" https://angular.io/features
  • 10. Beware Even though a framework has good support for accessibility doesn’t mean you don’t need to do anything.
  • 11. Implementation is key The accessibility is solely down to how it's implemented, if your code has poor accessibility support the outcome won't be great.
  • 12. Single Page Apps Are more complicated, which means the accessibility has to be more involved.
  • 13. Prioritising effort Focus less about colour contrast, link text and correct heading structure.
  • 14. Rules to develop to 1. Write HTML according to specifications 2. Make elements focusable from the keyboard 3. Page updates need to be announced
  • 15. 1. Write HTML according to specs Use elements the correct way, if you need a button use a button.
  • 16. Building your own elements Means you need to add accessibility behaviour back onto the controls, it’s a massive headache and it takes time. Do you need to make custom controls?
  • 17. Building your own elements <span>Click Me</span> <div>Click Me</div> SPAN and DIV elements have no default behaviour, it needs to be built in.
  • 18. Building a button <div role="button">Click Me</div> + Add the ARIA role
  • 19. Building a button <div role="button" tabindex="0">Click Me</div> + Add the ARIA role + Add the tabindex
  • 20. Building a button <div role="button" tabindex="0">Click Me</div> + Add the ARIA role + Add the tabindex + Add the style change
  • 21. Or just use a button <button>Click Me</button>
  • 22. Semantic elements They just work, assistive technology interprets them correctly. No extra work is needed.
  • 23. The trade off Semantic interface = works as intended Custom interface = adding accessibility back
  • 24. 2. Keyboard focusable Make everything focusable from the keyboard, some people may use the keyboard over the mouse.
  • 25. Use the tabindex attribute wisely Can be used to reorder the entire keyboard tab sequence if not careful. If you use regular elements in a regular way, this behaviour is already included by default.
  • 26. Positioning <a href="blah.html tabindex="10">blah</a> Refers to the tab position of the element on the page
  • 27. Pick a number tabindex="0" element appears in the regular keyboard sequence tabindex="-1" element is hidden from the keyboard sequence tabindex="1" + goodbye regular keyboard sequence!
  • 28. Don’t do this <a href="blah.html" tabindex="1">blah</a>
  • 29. Or this <a href="blah.html" tabindex="10">blah</a>
  • 30. Or even this <a href="blah.html" tabindex="1010">blah</a>
  • 31. Tabindex of +1 and above <a href="blah.html" tabindex="1">blah</a>
  • 32. 3. Updates need to be announced Announce the change if the page updates.
  • 33. What's it doing? SPA's may not always trigger a full page refresh, if a user is vision impaired they won't know a change has occurred.
  • 34. Introducing ARIA Set of attributes which generate behaviour in assistive technology to announce changes to help a web application work better for AT users.
  • 35. Need to announce an update? An aria live region can trigger a screen reader to announce new content.
  • 36. Need to announce an update? <div aria-live="polite"> Content to announce </div>
  • 37. ARIA live region q Content updated Updating page content static content "Content updated"X
  • 38. Automate the heavy lifting Reach Router for React "Router manages the focus of your app on route transitions. There’s nothing you have to do about it, it just happens." LiveAnnouncer Angular Material "LiveAnnouncer is used to announce messages for screen-reader users using an aria-live region"
  • 39. This is just scratching the surface Accessibility is complex and challenging, different browsers and screen readers will affect end results.
  • 40. Focus on the hard and difficult • Use semantic elements • Don’t alter the tabindex • Announce updates with ARIA live regions
  • 41. For more information Get the code at github.com/canaxess/presentations navigate to CanberraJS www.canaxess.com.au ross.mullen@canaxess.com.au @MrRossMullen