What is the real impact on an element when using
aria-owns="id"
and(!)
aria-controls="id"
How do the browsers notify the screen readers when these two attributes are used?
What is the real impact on an element when using
aria-owns="id"
and(!)
aria-controls="id"
How do the browsers notify the screen readers when these two attributes are used?
Both aria-controls
and aria-owns
are used when the relation between the two element can't be determined from the DOM hierarchy itself.
aria-controls
is intended to indicate that an element controls another one. E.g. control buttons for a video for instance, a toolbar for a visual editor or a button for a collapsible element. Screen readers like jaws will announce a shortcut to move the visual focus to the element. This requires the element to be in the visual flow (no display:none
).
aria-owns
indicate that an element depends on the current one when the relation can't be determined by the hierarchy structure.
To sum up, with an example, if you have a carousel with three parts:
Result:
aria-controls
will be applied to buttons like "previous" or "next" to point to the wrapper.
aria-owns
will be applied to each element of the title list to point to each element inside the wrapper.
the active element in the title list would have the aria-selected
attribute
The intended effect is that you could move the visual focus of your screenreader to the determined element.
The difference between -owns and -controls is that -owns creates a parent/child relationship where none exists, and -controls indicates that one thing controls the other. So A can control B, but A doesn't have to be a parent of B for that to be the case.
leonie watson
We've found this to be especially important in 2020, as browsers and screen readers are increasing their support for aria-owns and breaking the user experience. Please check your code for aria-owns and make sure you didn't mean aria-controls.