I just noticed that although the aria-label
, aria-labelledby
and aria-describedby
attributes are said to work on every element (see https://www.w3.org/WAI/PF/aria-1.1/states_and_properties#aria-describedby), they only seem to work for a few elements like a
, and not for e.g. div
or p
in NVDA and JAWS.
I have created a small codepen to demonstrate the issue (browse it using browse and focus mode):
https://codepen.io/jmuheim/pen/avWbPe
For example, in NVDA, on the a
element, the aria-label
and aria-labelledby
seem to work in both browse and focus mode. But aria-describedby
is only announced in focus mode, not in browse mode.
For the input
element, none of the attributes seem to work in browse mode, but all work in focus mode.
For "bare" text elements like p
or div
, none of the attributes seem to work.
In JAWS, it's quite similar behaviour, but at least for the p
element, when there is an aria-describedby
, it announces that a description can be read by pressing "JAWS + alt + r".
I don't really see a clear pattern for this, so I wonder what are the general rules in screenreaders on how to use these attributes? Or better: why don't they simply work for every element, as the spec proposes?