SlideShare une entreprise Scribd logo
1  sur  25
Best Practices and
Work Around in
Mobile Hybrid Applications
#a11yTO Camp 2016
Bobby Bristol
Senior Developer, TD
Hybrid Mobile Application
A hybrid application (hybrid app) is one that combines elements
of both native and Web applications.
DEVICE
APIS
PLUGIN
S DEVICE PLUGINS
HTML
Javascript
CSS
Objective
C/Swift
Java
Voiceover vs. Talkback
IOS – Voiceover
 Screen reader is embedded on the app.
 Does not require internet connection.
 Very stable.
Android – Talkback
 Web/hybrid app’s screen reader is injected on each pages.
 Will not work without internet connection.
 Standards keep changing on each Android version.
 Not as stable as Voiceover.
Note about Android
Websites or applications when opened in Android’s
Native Browser, or Chrome, or Firefox for Android
has different accessibility support.
They will give different results with Talkback.
Hybrid mobile application, by default uses the
native browser.
ARIA Tags
IOS : Ignored on span, div, p, blockquotes, tables
Android: Works as expected
<p aria-label=“Name”>This paragraph</p>
Voiceover reads: “This paragraph” and ignores “Name”
Talkback reads “Name” “This paragraph”
, aria-label aria-labelledby, aria-label
aria-describedby
Coding Best Practices & Work
Around
BEST PRACTICE:
Use the right HTML semantics
If you need to display a label as header, use header tag.
If you need a button, use the input button tag.
Proper:
<h1>Subject</h1>
Wrong:
<div class=“header1”>Subject</div>
Work around?
<div class=“header1” role=“heading”>
Subject</div>
Common Problems:
Incorrect Semantics
Proper:
<input type=button value=Submit/>
Wrong:
<div onclick=“javascript:submit()”
class=“button”> Submit</div>
Proper:
<input type=button value=Submit/>
Wrong:
<div onclick=“javascript:submit()”
class=“button”> Submit</div>
Work around:
<div role=“button”
onclick=“javascript:submit()”
class=“button”> Submit</div>
Possible Role values
 alert
 alertdialog
 button
 checkbox
 dialog
 menuitem
 option
 tab
 banner
 navigation
Common Issues with Tables
Proper:
<table>
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Content 1</td>
<td>Content 2</td>
</tr>
<tbody>
</table>
Wrong:
<table>
<tr>
<td>Header 1</td>
<td>Header 2</td>
</tr>
<tr>
<td>Content 1</td>
<td>Content 2</td>
</tr>
</table>
Custom controls?
Third party controls?
Controls you can’t modify
Labels that means something
more?
Common Problems:
Incorrect/incomplete labels
Labels that means something more?
Balance : (230.00)
YTD Amount: 10,500.00
Work around:
<span class=”font-size:0px;width:0;height:0;
overflow-hidden;”> Text to Speak </span>
Balance : (230.00)
Balance: <span class=”a11yHidden”>-</span>
<span>230</span>
YTD Amount: 10,500.00
<span class=”a11yHidden”>Year to date</span>
<span aria-hidden=“true”>YTD </span>
<span>Amount: 10,500.00</span>
CSS:
. a11yHidden
{ font-size:0px; width:0; height:0; opacity:1;
overflow:hidden;}
<td>
<span class=”a11yHidden”>Header 1</span>
<span id=1>Content 1</span>
</td>
<td>
<span class=”a11yHidden”>Header 2</span>
<span id=2>Content 2</span>
</td>
How to fix the table and any
custom control?
1. Use Javascript
2. Use proper ID for the control or element
3. Once the control codes are loaded, find the elements from the
HTML’s DOM
4. For each element you need to change, inject the html code
Common Problems:
Incorrect focus
All pop ups, modal windows, session timeout
notifications, etc. must receive focus from the
underlying application.
1. Once the popup window appears, change the
parent window to “aria-hidden=true”
2. By javascript, move the focus to the popup
window
popupNode.focus()
popupNode.tabindex = -1
3. When the popup window is closed, turn the
parent window back to “aria-hidden=false”
Parent
windowPopup,
dialog
If the popup is modal
1. Once the popup window appears, change the parent
window to “aria-hidden=true”
2. By javascript, move the focus to the popup window
popupNode.focus()
popupNode.tabindex = -1
3. Set back the parent window to aria hidden to false
setTimeout(lang.hitch(this, function() {
parentWindow. aria-hidden = false;
}),3000);
Parent
window
Popup,
dialog
If the popup is non- modal
Accessibility on IOS Native
BEST PRACTICE:
Use the right IOS object semantics
Accessibility options in IOS
THANK YOU!
Questions?
Resources
http://accessibility.arl.org/standards-best-practices/
https://www.marcozehe.de/
IOS:
https://developer.apple.com/accessibility/ios/
For a copy of this deck:
http://www.slideshare.net/BobbyBristol/accessibility-for-hybrid-
mobile
About me
 Senior IOS developer in TD
 Worked on both hybrid and native IOS development
 Extensive background in web development
 Certified usability analyst and user experience designer
 Connect with me bobbybristol@yahoo.com

Contenu connexe

Tendances

What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
Simplilearn
 

Tendances (20)

Introduction to Flutter
Introduction to FlutterIntroduction to Flutter
Introduction to Flutter
 
Building component-driven UIs at Spotify
Building component-driven UIs at SpotifyBuilding component-driven UIs at Spotify
Building component-driven UIs at Spotify
 
Nutanix
NutanixNutanix
Nutanix
 
POWER OF PYTHON PROGRAMMING LANGUAGE
POWER OF PYTHON PROGRAMMING LANGUAGE POWER OF PYTHON PROGRAMMING LANGUAGE
POWER OF PYTHON PROGRAMMING LANGUAGE
 
Flutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for businessFlutter overview - advantages & disadvantages for business
Flutter overview - advantages & disadvantages for business
 
Learning Docker from Square One
Learning Docker from Square OneLearning Docker from Square One
Learning Docker from Square One
 
User Experience Design for Embedded Devices
User Experience Design for Embedded DevicesUser Experience Design for Embedded Devices
User Experience Design for Embedded Devices
 
Web Push Notifications done right
Web Push Notifications done rightWeb Push Notifications done right
Web Push Notifications done right
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Python for Linux System Administration
Python for Linux System AdministrationPython for Linux System Administration
Python for Linux System Administration
 
Amanda for Data Backup, or: How to Sleep Better at Night (OSCON 2004)
Amanda for Data Backup, or: How to Sleep Better at Night (OSCON 2004)Amanda for Data Backup, or: How to Sleep Better at Night (OSCON 2004)
Amanda for Data Backup, or: How to Sleep Better at Night (OSCON 2004)
 
Testing Checklist for Mobile Applications-By Anurag Khode
Testing Checklist for Mobile Applications-By Anurag KhodeTesting Checklist for Mobile Applications-By Anurag Khode
Testing Checklist for Mobile Applications-By Anurag Khode
 
Dvm
DvmDvm
Dvm
 
What is OneDrive for Business and What Does it Do?
What is OneDrive for Business and What Does it Do?What is OneDrive for Business and What Does it Do?
What is OneDrive for Business and What Does it Do?
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Final terraform
Final terraformFinal terraform
Final terraform
 
Enhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekitEnhancing drone application development using python and dronekit
Enhancing drone application development using python and dronekit
 
Terraform 0.9 + good practices
Terraform 0.9 + good practicesTerraform 0.9 + good practices
Terraform 0.9 + good practices
 
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
 
iOS Application Testing
iOS Application TestingiOS Application Testing
iOS Application Testing
 

Similaire à Accessibility for hybrid mobile

GDI Seattle Intermediate HTML and CSS Class 1
GDI Seattle Intermediate HTML and CSS Class 1GDI Seattle Intermediate HTML and CSS Class 1
GDI Seattle Intermediate HTML and CSS Class 1
Heather Rock
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
John Hartley
 
Breaking the Box: Pushing the Boundaries of UX with Drupal
Breaking the Box: Pushing the Boundaries of UX with DrupalBreaking the Box: Pushing the Boundaries of UX with Drupal
Breaking the Box: Pushing the Boundaries of UX with Drupal
Acquia
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Chris Love
 

Similaire à Accessibility for hybrid mobile (20)

Accessibility for Hybrid Mobile
Accessibility for Hybrid MobileAccessibility for Hybrid Mobile
Accessibility for Hybrid Mobile
 
Christian Mladenov @ Intuitics
Christian Mladenov @ IntuiticsChristian Mladenov @ Intuitics
Christian Mladenov @ Intuitics
 
GDI Seattle Intermediate HTML and CSS Class 1
GDI Seattle Intermediate HTML and CSS Class 1GDI Seattle Intermediate HTML and CSS Class 1
GDI Seattle Intermediate HTML and CSS Class 1
 
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...Familiar Tools, New Possibilities:  Leveraging the Power of the Adobe Web Pub...
Familiar Tools, New Possibilities: Leveraging the Power of the Adobe Web Pub...
 
Progressive Web Apps - deep dive
Progressive Web Apps - deep diveProgressive Web Apps - deep dive
Progressive Web Apps - deep dive
 
Bcs 053 solved assignment 2014-15
Bcs 053 solved assignment 2014-15Bcs 053 solved assignment 2014-15
Bcs 053 solved assignment 2014-15
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Intro to Android for iOS developers
Intro to Android for iOS developersIntro to Android for iOS developers
Intro to Android for iOS developers
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issuesMaximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
Maximising Online Resource Effectiveness Workshop Session 3/8 Priority issues
 
How To Build An Accessible Web Application
How To Build An Accessible Web ApplicationHow To Build An Accessible Web Application
How To Build An Accessible Web Application
 
The Web Platform - State of the Union '17
The Web Platform - State of the Union '17The Web Platform - State of the Union '17
The Web Platform - State of the Union '17
 
Android Application Development
Android Application DevelopmentAndroid Application Development
Android Application Development
 
Breaking the Box: Pushing the Boundaries of UX with Drupal
Breaking the Box: Pushing the Boundaries of UX with DrupalBreaking the Box: Pushing the Boundaries of UX with Drupal
Breaking the Box: Pushing the Boundaries of UX with Drupal
 
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
“Good design is obvious. Great design is transparent.” — How we use Bootstrap...
 
Web Engineering
Web Engineering  Web Engineering
Web Engineering
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
 
The Users are Restless
The Users are RestlessThe Users are Restless
The Users are Restless
 
Intro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap BuildIntro to PhoneGap and PhoneGap Build
Intro to PhoneGap and PhoneGap Build
 

Dernier

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Accessibility for hybrid mobile

Notes de l'éditeur

  1. Hybrid app should be installed on the device. There are hybrid apps that the source code (html, javascript, css), some its just webview inside the app. This talk will focus more on hybrid app because naturally, mobile apps that are done in native code are usually good enough for accessibiltiy. Normally, minimal changes. But html on a mobile, there are always issues.
  2. With no internet connection, it will always just say “webview”
  3. Rules that apply on html also applies on an hybrid mobile application. Therefore, ARIA tags would be the same. Remind everyone that Voiceover is the name of the screenreader for IOS. Talkback is the screen reader for Android.
  4. Role only applies to HTML5
  5. What accessibility guideline are we violating here? “Ensure users can complete and submit all forms”
  6. Role is only applicable in HTML 5, which is perfectly fine for mobile, all browsers are in HTML 5
  7. Voiceover will ignore the the parentheses and will not say the number is of negative value YTD may be something you want to the whole word not the acronym. Sometimes you can only put the acronym, sometimes in table.
  8. Document Object Model
  9. Tabindex is needed to make sure the element will be put first from the list of elements.
  10. Tabindex is needed to make sure the element will be put first from the list of elements