SlideShare a Scribd company logo
Demystifying accessible names
Tobias Christian Jensen
≠
T19n
Accessibility
=
A11y
TL;DR Accessible names are what we
typically refer to as labels or alt texts.
Accessible name: “button Save”
label
role
Accessible name: “Brugernavn: edit required”
label role property
Accessible name: “menu button collapsed subMenu Filter”
role state relationship label
<button>Text</button>
<label />
alt
aria-label
aria-labelledby
title
value
…and more…
Accessible Name Computation
1. Initialize: Set the root node to the given element, the current node to the root node, and the total accumulated text to the empty string ("").
2. Compute the text alternative for the current node:
1. If the current node is hidden and is not directly referenced by aria-labelledby or aria-describedby, nor directly referenced by a native host language text alternative element (e.g. label in HTML) or attribute, return the empty string.
Comment:
By default, assistive technologies do not relay hidden information, but an author can explicitly override that and include hidden text as part of the accessible name or accessible description by using aria-labelledby or aria-describedby.
2. Otherwise:
1. if computing a name, and the current node has an aria-labelledby attribute that contains at least one valid IDREF, and the current node is not already part of an aria-labelledby traversal, process its IDREFs in the order they occur:
2. or, if computing a description, and the current node has an aria-describedby attribute that contains at least one valid IDREF, and the current node is not already part of an aria-describedby traversal, process its IDREFs in the order they occur:
1. Set the accumulated text to the empty string.
2. For each IDREF:
1. Set the current node to the node referenced by the IDREF.
2. Compute the text alternative of the current node beginning with step 2. Set the result to that text alternative.
3. Append the result, with a space, to the accumulated text.
3. Return the accumulated text.
3. Otherwise, if computing a name, and if the current node has an aria-label attribute whose value is not the empty string, nor, when trimmed of white space, is not the empty string:
1. If traversal of the current node is due to recursion and the current node is an embedded control as defined in step 2E, ignore aria-label and skip to rule 2E.
2. Otherwise, return the value of aria-label.
4. Otherwise, if the current node's native markup provides an attribute (e.g. title) or element (e.g. HTML label) that defines a text alternative, return that alternative in the form of a flat string as defined by the host language, unless the element is marked as
presentational (role="presentation" or role="none").
Comment:
For example, in HTML, the img element's alt attribute defines a text alternative string, and the label element provides text for the referenced form element. In SVG2, the desc and title elements provide a description of their parent element.
5. Otherwise, if the current node is a control embedded within the label (e.g. the label element in HTML or any element directly referenced by aria-labelledby) for another widget, where the user can adjust the embedded control's value, then include the
embedded control as part of the text alternative in the following manner:
1. If the embedded control has role textbox, return its value.
2. If the embedded control has role menu button, return the text alternative of the button.
3. If the embedded control has role combobox or listbox, return the text alternative of the chosen option.
4. If the embedded control has role range (e.g., a spinbutton or slider):
1. If the aria-valuetext property is present, return its value,
2. Otherwise, if the aria-valuenow property is present, return its value,
3. Otherwise, use the value as specified by a host language attribute.
6. Otherwise, if the current node's role allows name from content, or if the current node is referenced by aria-labelledby, aria-describedby, or is a native host language text alternative element (e.g. label in HTML), or is a descendant of a native host
language text alternative element:
1. Set the accumulated text to the empty string.
2. Check for CSS generated textual content associated with the current node and include it in the accumulated text. The CSS :before and :after pseudo elements [CSS2] can provide textual content for elements that have a content model.
1. For :before pseudo elements, User agents MUST prepend CSS textual content, without a space, to the textual content of the current node.
2. For :after pseudo elements, User agents MUST append CSS textual content, without a space, to the textual content of the current node.
3. For each child node of the current node:
1. Set the current node to the child node.
2. Compute the text alternative of the current node beginning with step 2. Set the result to that text alternative.
3. Append the result to the accumulated text.
4. Return the accumulated text.
7. Important: Each node in the subtree is consulted only once. If text has been collected from a descendant but is referenced by another IDREF in some descendant node, then that second, or subsequent, reference is not followed. This is done to avoid
infinite loops.
8. Comment:
This step can apply to the child nodes themselves, which means the computation is recursive and results in text collected from all the elements in the current node's subtree, no matter how deep it is. However, any given descendant node's text
alternative can result from higher precedent markup described in steps B through D above, where "Namefrom: author" attributes provide the text alternative for the entire subtree.
9. Otherwise, if the current node is a Text node, return its textual contents.
10. Otherwise, if the current node is a descendant of an element whose Accessible Name or Accessible Description is being computed, and contains descendants, proceed to 2F.i.
11. Otherwise, if the current node has a Tooltip attribute, return its value.
Comment:
Tooltip attributes are used only if nothing else, including subtree content, has provided results.
3. Append the result of each step above, with a space, to the total accumulated text.
After all steps are completed, the total accumulated text is used as the accessible name or accessible description of the element that initiated the computation.
Take-Aways
Accessible name: “button Remove:”
#1: Precedence
1. aria-labelledby
2. aria-label
3. title / <label>
4. Text
Accessible name: “Hibiscus: It’s a flower, I think. region”
#2: Concatenation
Accessible name: “button Save”
#3: Referring to hidden elements
Accessible name: “button Egg”
#4: No infinite loops
Accessible name: “button Filter: Errors”
#5: Self-reference
Fight your creativity
We should be leaning on
established conventions.
What should be innovative and
the kind of thing that excites
users is the content and the
functionality.
Not the way that we create the
functionality.
Heydon
Pickering
Benefit #1: It is obvious to ourselves
when something is not up-to-date.
Use the existing text
Ctrl + F
Benefit #2:
Benefit #3: Screen reader users can see
it and follow along on their screen.
Wait, what?
1.3 billion
3% Blind
33% Distance vision impairment
64% Near vision impairment
Credit: World Health Organisation
Assistive Technology
Other
Tools that highlight text as it is read
Custom styles (for example with Stylish, Stylus, or user style
sheets)
Browser settings to change colors
High contrast mode or settings
Browser text sizing settings
Browser zoom controls (zooms all page content)
Screen reader
Screen magnification software or system settings
0% 10% 20% 30% 40% 50% 60%
Credit: WebAIM https://webaim.org/projects/lowvisionsurvey2/
Writing the copy
Be as brief as you can
but still meaningful
AwesomeProduct™
Read information
Tooltip
Information
Learn more
In this section, you can learn…
Learn about AwesomeProduct™
Responsibilities
Consider
Who should pick our colors?
Who should write our copy?
…And is that always the case today?
Accessibility ownership
o IX Designer: 37% (14)
o Content Author: 24% (9)
o Developer: 21% (8)
o Vx Designer: 16% (6)
o Business Owner: 3% (1)
Developers only own 1 in 5 criteria.
Developers are 3rd in ownership.
Need to work with other roles.
95% of decisions come before code.
Credit: “Roled-Based Analysis of WCAG 2.0” by Bill Tyler
Naming is hard.
So I’m building a guide.
Step 1: Go to Confluence
Step 2: Search for “Accessible Name”
Step 3:

More Related Content

What's hot

C++ Langauage Training in Ambala ! BATRA COMPUTER CENTRE
C++  Langauage Training in Ambala ! BATRA COMPUTER CENTREC++  Langauage Training in Ambala ! BATRA COMPUTER CENTRE
C++ Langauage Training in Ambala ! BATRA COMPUTER CENTRE
jatin batra
 
Bcsl 031 solve assignment
Bcsl 031 solve assignmentBcsl 031 solve assignment
1 puc programming using c++
1 puc programming using c++1 puc programming using c++
1 puc programming using c++
Prof. Dr. K. Adisesha
 
SS & CD Module 3
SS & CD Module 3 SS & CD Module 3
SS & CD Module 3
ShwetaNirmanik
 
Module 2
Module 2 Module 2
Module 2
ShwetaNirmanik
 
Programming Fundamentals
Programming FundamentalsProgramming Fundamentals
Programming Fundamentals
Hassan293
 
Basics1
Basics1Basics1
Basics1
phanleson
 
DATA BASE MANAGEMENT SYSTEM - SHORT NOTES
DATA BASE MANAGEMENT SYSTEM - SHORT NOTESDATA BASE MANAGEMENT SYSTEM - SHORT NOTES
DATA BASE MANAGEMENT SYSTEM - SHORT NOTES
suthi
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
Aiman Hud
 
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
Vineet Kumar Saini
 
C material
C materialC material
C material
tarique472
 
Pc module1
Pc module1Pc module1
Pc module1
SANTOSH RATH
 
Golang proto buff_ixxo
Golang proto buff_ixxoGolang proto buff_ixxo
Golang proto buff_ixxo
www.ixxo.io
 
Literals, primitive datatypes, variables, expressions, identifiers
Literals, primitive datatypes, variables, expressions, identifiersLiterals, primitive datatypes, variables, expressions, identifiers
Literals, primitive datatypes, variables, expressions, identifiers
Tanishq Soni
 
Functions, Strings ,Storage classes in C
 Functions, Strings ,Storage classes in C Functions, Strings ,Storage classes in C
Functions, Strings ,Storage classes in C
arshpreetkaur07
 
Dot net programming concept
Dot net  programming conceptDot net  programming concept
Dot net programming concept
sandeshjadhav28
 
Chap 2 c++
Chap 2 c++Chap 2 c++
Chap 2 c++
Widad Jamaluddin
 
Chapter 2 basic element of programming
Chapter 2 basic element of programming Chapter 2 basic element of programming
Chapter 2 basic element of programming
Zul Aiman
 
Structures-2
Structures-2Structures-2
Structures-2
arshpreetkaur07
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
Aiman Hud
 

What's hot (20)

C++ Langauage Training in Ambala ! BATRA COMPUTER CENTRE
C++  Langauage Training in Ambala ! BATRA COMPUTER CENTREC++  Langauage Training in Ambala ! BATRA COMPUTER CENTRE
C++ Langauage Training in Ambala ! BATRA COMPUTER CENTRE
 
Bcsl 031 solve assignment
Bcsl 031 solve assignmentBcsl 031 solve assignment
Bcsl 031 solve assignment
 
1 puc programming using c++
1 puc programming using c++1 puc programming using c++
1 puc programming using c++
 
SS & CD Module 3
SS & CD Module 3 SS & CD Module 3
SS & CD Module 3
 
Module 2
Module 2 Module 2
Module 2
 
Programming Fundamentals
Programming FundamentalsProgramming Fundamentals
Programming Fundamentals
 
Basics1
Basics1Basics1
Basics1
 
DATA BASE MANAGEMENT SYSTEM - SHORT NOTES
DATA BASE MANAGEMENT SYSTEM - SHORT NOTESDATA BASE MANAGEMENT SYSTEM - SHORT NOTES
DATA BASE MANAGEMENT SYSTEM - SHORT NOTES
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
Top C Language Interview Questions and Answer
Top C Language Interview Questions and AnswerTop C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
 
C material
C materialC material
C material
 
Pc module1
Pc module1Pc module1
Pc module1
 
Golang proto buff_ixxo
Golang proto buff_ixxoGolang proto buff_ixxo
Golang proto buff_ixxo
 
Literals, primitive datatypes, variables, expressions, identifiers
Literals, primitive datatypes, variables, expressions, identifiersLiterals, primitive datatypes, variables, expressions, identifiers
Literals, primitive datatypes, variables, expressions, identifiers
 
Functions, Strings ,Storage classes in C
 Functions, Strings ,Storage classes in C Functions, Strings ,Storage classes in C
Functions, Strings ,Storage classes in C
 
Dot net programming concept
Dot net  programming conceptDot net  programming concept
Dot net programming concept
 
Chap 2 c++
Chap 2 c++Chap 2 c++
Chap 2 c++
 
Chapter 2 basic element of programming
Chapter 2 basic element of programming Chapter 2 basic element of programming
Chapter 2 basic element of programming
 
Structures-2
Structures-2Structures-2
Structures-2
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 

Similar to Siteimprove TechTalk: Demystifying Accessible Names

7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
abdulhaq467432
 
Object oriented concepts & programming (2620003)
Object oriented concepts & programming (2620003)Object oriented concepts & programming (2620003)
Object oriented concepts & programming (2620003)
nirajmandaliya
 
C++ Object oriented concepts & programming
C++ Object oriented concepts & programmingC++ Object oriented concepts & programming
C++ Object oriented concepts & programming
nirajmandaliya
 
PYTHON 101.pptx
PYTHON 101.pptxPYTHON 101.pptx
PYTHON 101.pptx
MarvinHoxha
 
Python Objects
Python ObjectsPython Objects
Python Objects
MuhammadBakri13
 
C, C++ Interview Questions Part - 1
C, C++ Interview Questions Part - 1C, C++ Interview Questions Part - 1
C, C++ Interview Questions Part - 1
ReKruiTIn.com
 
Functions in Python Syntax and working .
Functions in Python Syntax and working .Functions in Python Syntax and working .
Functions in Python Syntax and working .
tarunsharmaug23
 
My c++
My c++My c++
My c++
snathick
 
Assignment Examples Final 07 Oct
Assignment Examples Final 07 OctAssignment Examples Final 07 Oct
Assignment Examples Final 07 Oct
Sriram Raj
 
Introduction to objects and inputoutput
Introduction to objects and inputoutput Introduction to objects and inputoutput
Introduction to objects and inputoutput
Ahmad Idrees
 
OOC MODULE1.pptx
OOC MODULE1.pptxOOC MODULE1.pptx
OOC MODULE1.pptx
1HK19CS090MOHAMMEDSA
 
Bt0067 c programming and data structures2
Bt0067 c programming and data structures2Bt0067 c programming and data structures2
Bt0067 c programming and data structures2
Techglyphs
 
Java Basics
Java BasicsJava Basics
Java Basics
shivamgarg_nitj
 
Mule expression
Mule expressionMule expression
Mule expression
Ravinder Singh
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4
Richard Jones
 
presentation of java fundamental
presentation of java fundamentalpresentation of java fundamental
presentation of java fundamental
Ganesh Chittalwar
 
The Bund language
The Bund languageThe Bund language
The Bund language
Vladimir Ulogov
 
Programming in C sesion 2
Programming in C sesion 2Programming in C sesion 2
Programming in C sesion 2
Prerna Sharma
 
What is c language
What is c languageWhat is c language
What is c language
Kushaal Singla
 
C programming(part 3)
C programming(part 3)C programming(part 3)
C programming(part 3)
SURBHI SAROHA
 

Similar to Siteimprove TechTalk: Demystifying Accessible Names (20)

7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
7.-Download_CS201-Solved-Subjective-with-Reference-by-Aqib.doc
 
Object oriented concepts & programming (2620003)
Object oriented concepts & programming (2620003)Object oriented concepts & programming (2620003)
Object oriented concepts & programming (2620003)
 
C++ Object oriented concepts & programming
C++ Object oriented concepts & programmingC++ Object oriented concepts & programming
C++ Object oriented concepts & programming
 
PYTHON 101.pptx
PYTHON 101.pptxPYTHON 101.pptx
PYTHON 101.pptx
 
Python Objects
Python ObjectsPython Objects
Python Objects
 
C, C++ Interview Questions Part - 1
C, C++ Interview Questions Part - 1C, C++ Interview Questions Part - 1
C, C++ Interview Questions Part - 1
 
Functions in Python Syntax and working .
Functions in Python Syntax and working .Functions in Python Syntax and working .
Functions in Python Syntax and working .
 
My c++
My c++My c++
My c++
 
Assignment Examples Final 07 Oct
Assignment Examples Final 07 OctAssignment Examples Final 07 Oct
Assignment Examples Final 07 Oct
 
Introduction to objects and inputoutput
Introduction to objects and inputoutput Introduction to objects and inputoutput
Introduction to objects and inputoutput
 
OOC MODULE1.pptx
OOC MODULE1.pptxOOC MODULE1.pptx
OOC MODULE1.pptx
 
Bt0067 c programming and data structures2
Bt0067 c programming and data structures2Bt0067 c programming and data structures2
Bt0067 c programming and data structures2
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Mule expression
Mule expressionMule expression
Mule expression
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4
 
presentation of java fundamental
presentation of java fundamentalpresentation of java fundamental
presentation of java fundamental
 
The Bund language
The Bund languageThe Bund language
The Bund language
 
Programming in C sesion 2
Programming in C sesion 2Programming in C sesion 2
Programming in C sesion 2
 
What is c language
What is c languageWhat is c language
What is c language
 
C programming(part 3)
C programming(part 3)C programming(part 3)
C programming(part 3)
 

Recently uploaded

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 

Recently uploaded (20)

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 

Siteimprove TechTalk: Demystifying Accessible Names

  • 3. TL;DR Accessible names are what we typically refer to as labels or alt texts.
  • 4. Accessible name: “button Save” label role
  • 5. Accessible name: “Brugernavn: edit required” label role property
  • 6. Accessible name: “menu button collapsed subMenu Filter” role state relationship label
  • 9. 1. Initialize: Set the root node to the given element, the current node to the root node, and the total accumulated text to the empty string (""). 2. Compute the text alternative for the current node: 1. If the current node is hidden and is not directly referenced by aria-labelledby or aria-describedby, nor directly referenced by a native host language text alternative element (e.g. label in HTML) or attribute, return the empty string. Comment: By default, assistive technologies do not relay hidden information, but an author can explicitly override that and include hidden text as part of the accessible name or accessible description by using aria-labelledby or aria-describedby. 2. Otherwise: 1. if computing a name, and the current node has an aria-labelledby attribute that contains at least one valid IDREF, and the current node is not already part of an aria-labelledby traversal, process its IDREFs in the order they occur: 2. or, if computing a description, and the current node has an aria-describedby attribute that contains at least one valid IDREF, and the current node is not already part of an aria-describedby traversal, process its IDREFs in the order they occur: 1. Set the accumulated text to the empty string. 2. For each IDREF: 1. Set the current node to the node referenced by the IDREF. 2. Compute the text alternative of the current node beginning with step 2. Set the result to that text alternative. 3. Append the result, with a space, to the accumulated text. 3. Return the accumulated text. 3. Otherwise, if computing a name, and if the current node has an aria-label attribute whose value is not the empty string, nor, when trimmed of white space, is not the empty string: 1. If traversal of the current node is due to recursion and the current node is an embedded control as defined in step 2E, ignore aria-label and skip to rule 2E. 2. Otherwise, return the value of aria-label. 4. Otherwise, if the current node's native markup provides an attribute (e.g. title) or element (e.g. HTML label) that defines a text alternative, return that alternative in the form of a flat string as defined by the host language, unless the element is marked as presentational (role="presentation" or role="none"). Comment: For example, in HTML, the img element's alt attribute defines a text alternative string, and the label element provides text for the referenced form element. In SVG2, the desc and title elements provide a description of their parent element. 5. Otherwise, if the current node is a control embedded within the label (e.g. the label element in HTML or any element directly referenced by aria-labelledby) for another widget, where the user can adjust the embedded control's value, then include the embedded control as part of the text alternative in the following manner: 1. If the embedded control has role textbox, return its value. 2. If the embedded control has role menu button, return the text alternative of the button. 3. If the embedded control has role combobox or listbox, return the text alternative of the chosen option. 4. If the embedded control has role range (e.g., a spinbutton or slider): 1. If the aria-valuetext property is present, return its value, 2. Otherwise, if the aria-valuenow property is present, return its value, 3. Otherwise, use the value as specified by a host language attribute. 6. Otherwise, if the current node's role allows name from content, or if the current node is referenced by aria-labelledby, aria-describedby, or is a native host language text alternative element (e.g. label in HTML), or is a descendant of a native host language text alternative element: 1. Set the accumulated text to the empty string. 2. Check for CSS generated textual content associated with the current node and include it in the accumulated text. The CSS :before and :after pseudo elements [CSS2] can provide textual content for elements that have a content model. 1. For :before pseudo elements, User agents MUST prepend CSS textual content, without a space, to the textual content of the current node. 2. For :after pseudo elements, User agents MUST append CSS textual content, without a space, to the textual content of the current node. 3. For each child node of the current node: 1. Set the current node to the child node. 2. Compute the text alternative of the current node beginning with step 2. Set the result to that text alternative. 3. Append the result to the accumulated text. 4. Return the accumulated text. 7. Important: Each node in the subtree is consulted only once. If text has been collected from a descendant but is referenced by another IDREF in some descendant node, then that second, or subsequent, reference is not followed. This is done to avoid infinite loops. 8. Comment: This step can apply to the child nodes themselves, which means the computation is recursive and results in text collected from all the elements in the current node's subtree, no matter how deep it is. However, any given descendant node's text alternative can result from higher precedent markup described in steps B through D above, where "Namefrom: author" attributes provide the text alternative for the entire subtree. 9. Otherwise, if the current node is a Text node, return its textual contents. 10. Otherwise, if the current node is a descendant of an element whose Accessible Name or Accessible Description is being computed, and contains descendants, proceed to 2F.i. 11. Otherwise, if the current node has a Tooltip attribute, return its value. Comment: Tooltip attributes are used only if nothing else, including subtree content, has provided results. 3. Append the result of each step above, with a space, to the total accumulated text. After all steps are completed, the total accumulated text is used as the accessible name or accessible description of the element that initiated the computation.
  • 11. Accessible name: “button Remove:” #1: Precedence 1. aria-labelledby 2. aria-label 3. title / <label> 4. Text
  • 12. Accessible name: “Hibiscus: It’s a flower, I think. region” #2: Concatenation
  • 13. Accessible name: “button Save” #3: Referring to hidden elements
  • 14. Accessible name: “button Egg” #4: No infinite loops
  • 15. Accessible name: “button Filter: Errors” #5: Self-reference
  • 16.
  • 17.
  • 19. We should be leaning on established conventions. What should be innovative and the kind of thing that excites users is the content and the functionality. Not the way that we create the functionality. Heydon Pickering
  • 20. Benefit #1: It is obvious to ourselves when something is not up-to-date. Use the existing text
  • 21.
  • 23. Benefit #3: Screen reader users can see it and follow along on their screen.
  • 25. 1.3 billion 3% Blind 33% Distance vision impairment 64% Near vision impairment Credit: World Health Organisation
  • 26. Assistive Technology Other Tools that highlight text as it is read Custom styles (for example with Stylish, Stylus, or user style sheets) Browser settings to change colors High contrast mode or settings Browser text sizing settings Browser zoom controls (zooms all page content) Screen reader Screen magnification software or system settings 0% 10% 20% 30% 40% 50% 60% Credit: WebAIM https://webaim.org/projects/lowvisionsurvey2/
  • 27.
  • 29. Be as brief as you can but still meaningful AwesomeProduct™ Read information Tooltip Information Learn more In this section, you can learn… Learn about AwesomeProduct™
  • 30.
  • 32. Consider Who should pick our colors? Who should write our copy? …And is that always the case today?
  • 33. Accessibility ownership o IX Designer: 37% (14) o Content Author: 24% (9) o Developer: 21% (8) o Vx Designer: 16% (6) o Business Owner: 3% (1) Developers only own 1 in 5 criteria. Developers are 3rd in ownership. Need to work with other roles. 95% of decisions come before code. Credit: “Roled-Based Analysis of WCAG 2.0” by Bill Tyler
  • 34. Naming is hard. So I’m building a guide. Step 1: Go to Confluence Step 2: Search for “Accessible Name” Step 3: