ARIA tooltip nodes must have an accessible name
How to Fix the Problem
Correct markup solutions
The aria-tooltip-name
rule has four markup patterns that pass
test criteria:
<div role="tooltip" id="al" aria-label="Name"></div>
<div role="tooltip" id="alb" aria-labelledby="labeldiv"></div>
<div role="tooltip" id="combo" aria-label="Aria Name">Name</div>
<div role="tooltip" id="title" title="Title"></div>
-
Ensure that each element with
role="tooltip"
has one of the following characteristics:- Inner text that is discernible to screen reader users.
- Non-empty
aria-label
attribute. -
aria-labelledby
pointing to element with text which is discernible to screen reader users.
Incorrect markup solutions
The aria-tooltip-name
rule has four markup patterns that fail
testing criteria:
<div role="tooltip" id="empty"></div>
<div role="tooltip" id="alempty" aria-label=""></div>
<div role="tooltip" id="albmissing" aria-labelledby="nonexistent"></div>
<div role="tooltip" id="albempty" aria-labelledby="emptydiv"></div>
<div id="emptydiv"></div>
Why it Matters
Screen reader users are not able to discern the purpose of elements with
role="tooltip"
that do not have an accessible name.
Rule Description
Aria tooltip elements must have discernible text that clearly describes the destination, purpose, function, or action for screen reader users.
The Algorithm (in simple terms)
Checks all elements with role="tooltip"
to ensure that they have
a discernable, accessible name.
"; if (!!window.MSInputMethodContext && !!document.documentMode ) document.getElementById("form_message").innerHTML = checkMark + msg + "
"; else document.getElementById("form_message").innerHTML = checkMarkAnimation + msg + "
"; } if(type === "warning" ) { document.getElementById("form_message").style.color = "#916216"; document.getElementById("form_message").innerHTML = warningIcon + msg + "
"; } if(type === "error" ) { document.getElementById("form_message").style.color = "#b40909"; document.getElementById("form_message").innerHTML = errorIcon + msg + "
"; } document.getElementById("form_message").tabIndex = -1; document.getElementById("form_message").focus(); } function clearMessage() { document.getElementById("form_message").innerHTML = ""; } function showFeedbackForm() { document.getElementById("feedback-form").className = ""; document.getElementById("feedback-info").className = "deque-hidden"; document.getElementById("yesButton").focus(); setTimeout((function (){ document.getElementById("yesButton").focus(); }), 5000); } function hideFeedbackForm() { if( feedbackData ) { document.getElementById("feedback-info").className = ""; showMessage("You have cancelled editing your earlier feedback.", "warning"); } document.getElementById("feedback-form").className = "deque-hidden"; document.getElementById("yesButton").style.display = ""; document.getElementById("noButton").style.display = ""; document.getElementById("noFeedback").className = "deque-hidden"; setTimeout((function() { clearMessage(); }), 4000); }