-
-
Notifications
You must be signed in to change notification settings - Fork 7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug Report] Skeleton loaders should not have aria-busy and alert role #10999
Comments
To add more information to this bug report... I was provided an example that not only shows the skeleton but also what happens when the content loads: Using that and the example above I can confirm that VoiceOver with Safari 14 on macOS 11 announces alert (and each newline) when I navigate to the skeleton using the virtual cursor. JAWS does not, NVDA does not. Part of the issue is that only JAWS (2020, but I believe back to 2018) honors Narrator (Windows 10 Pro with Edge 87), NVDA (2020.2 with Chrome 87 and Firefox 83), TalkBack (Android 11 with Chrome 86 and Firefox 83), and VoiceOver (iOS 14, macOS 11) treat This construct will not work as-is, but having an Either way, given that the skeleton has no content, given that it gives screen readers no context that content is loading, and given that it announces particularly poorly in VoiceOver, I recommend replacing |
As far as I can tell from research, besides not having a proper aria-label, we are inline with how other frameworks implement skeleton loaders, despite mixed suggestions across the web. I'm adding aria-label to provide "Loading..." text and in lieu of using our defaults, simply overwrite the values you think would be better locally. |
Testing #17073 with NVDA, it doesn't read anything at all without |
Environment
Vuetify Version: 2.2.20
Vue Version: 2.6.11
Browsers: Chrome 80.0.3987.149
OS: Windows 10
Steps to reproduce
Expected Behavior
It should not have
aria-busy="true"
androle="alert"
.Actual Behavior
It does.
Reproduction Link
https://codepen.io/phiter/pen/zYGXrZY
Other comments
With the current implementation, whenever a skeleton loader is added to the page, it causes screenreaders to read "alert busy", for each loader there is.
The current usage of
aria-busy
for skeleton loaders is wrong.aria-busy
should not be used in the skeleton loader itself. This aria state should be used in the parent container whenever its contents are changing, which is a case where the user would use skeleton loaders.So both these attributes should be removed from this component.
The accessibility section of skeleton docs can mention that the user should add
aria-busy
to a list, for example, if you start loading more items and add skeleton loaders. Then after loading ends, remove that attribute.The text was updated successfully, but these errors were encountered: