-
Notifications
You must be signed in to change notification settings - Fork 125
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
Consider deprecating all special live region roles except alert #1104
Comments
Why keep alert. Good question. We could deprecate as well. However, the alert role does recommend that platforms trigger an alert event or sound. None do as far as I know, but it could be particularly useful if they did. Whether or not this additional platform behavior is best achieved with a role is a good discussion. I think it would be better if alert were another value for aria-live that is like assertive but carries the additional behavior of triggering a platform alert event. |
Actually for the alert role, if you just use aria-live="assertive", it won't fire a system alert, but it will only do this if you use role="alert". E.G You can test this for the alert role at Using Firefox plus JAWS, click the Test button, then try tabbing away into another application like Outlook, and you will see what the system alert does. It appears that Chrome Beta has disabled this functionality so it no longer works properly there. We also have to be careful with getting rid of log and status, because I've seen this many times as part of chat applications over the years, and just deleting these will break all such implementations currently in the wild. |
@mcking65 I don't think that's a good idea. Just because the roles are not well supported by the AT and can be misused, they should not be abolished. The fact is that the roles make a lot of sense. And if we abolish them now, many of the pages they have used so far would have to be changed.
This applies to reading with the arrow keys (see FreedomScientific/standards-support#277). However, the automatic output is correct when the content is changed (if the role explicitly or implicitly has aria-live=polite or aria-live=assertive).
This applies to all roles. Each ARIA role overwrites the semantics of the HTML element. This is clearly warned in all specifications about ARIA. Therefore every developer should be aware that
This is an error of the AT, which is partly due to the fact that the ARIA specification does not explicitly require this. My suggestion would rather be to adapt the ARIA specification so that the live region roles serve not only as a live region but also as structuring elements, so that they are also correctly perceptible when reading with the arrow keys (output of role and name at the beginning and end). See also: FreedomScientific/standards-support#282 For the difference between aria-live=assertive and role=alert see FreedomScientific/standards-support#293 |
The only one from this list that I'd rather not see go away is But back to Additionally, the |
What would be the alternative if PS: Looks like https://github.com/gatsbyjs/gatsby/pull/19290/files#diff-2d21ea42ec874a0988977e57b17251aaR124-R141 is the important part. |
all comes down to the way it is being used / implemented I'd imagine. There can be issues with any live region, depending on how it's used / when it is added to the DOM. But as a persistent element in the DOM that has content injected into it, I've found little in the way of gaps with Gatsby's use is interesting because they've augmented the role by using |
What's the benefit then to augment the role by using |
I'd rather documentation was clearer and in more places (for example, every tutorial or instructions for widgets which use live regions). Developers don't realise what live regions do to tables as mentioned above, and recommendations to add live regions to tables (for when rows are dynamically added) is not uncommon. Since many of the live regions (even alerts) that I run into on the web are
it might be better to improve documentation, training, tutorials and instructions for widget components. In the cases above a live region isn't a great idea anyway: if I need to navigate it and cannot see where it is, I have to hunt. If I'm using screen magnification I'll not hear it. Same with Braille-only-- if I'm using a screen reader but I'm deaf/hoh I'll not hear it. Maybe some of the issues we're seeing with the various non-alert live regions is due to them being peddled a bit hard in the dev world as an easy go-to solution for letting users know stuff (regardless how important that stuff may be), without better informing developers of the repercussions and also the limitations. There are places where it may be better to move focus than use a live region (especially for task-breaking or must-be-interacted-with errors), even with all the dangers that entails. |
A bit off-topic, but can you share a test case or at least the browser(s) where this happens? Given that browsers also drop table semantics when using nearly any CSS |
Oops. I missed that @JAWS-test asked already, @mcking65. I thought you had a construct like |
I'd like to add a thought about I've frequently run into challenges with live-updating data, either in a table or (more often) in a graph, or both. Update frequency can easily be over once per second, so a straightforward live region is entirely out. So far I'm not aware of any solutions using |
I find "role=status" works fine... provides aira-live=polite and aria-atomic=true in one simple role without the mess ... seems to be well supported in NVDA and JAWS. We've been advocating it as a technique to meet WCAG 2.1 SC 4.1.3 since June 2019 after it tested well. |
Just to add to @DavidMacDonald's comment, we created the new Status Messages SC in WCAG 2.1 specifically to deal with situations where content is added to a screen but DOESN'T take focus. Shopping cart updates, info about search results, etc. |
Summary:
There's also a general consensus that the spec(s) need to be clearer about some things, e.g.:
|
A modern form of marquee can often be seen on company websites where one sentence starts statically and the second part changes dynamically. A theoretical example would be:
Without the marquee role, there is no way for AT users to notice that the content is constantly changing. aria-live would be inappropriate, since the permanent output of the live region is not desired |
I saw the call transcript, so I just wanted to bring up a couple things about As things stand now, we run a lot of cases were we need better live region capability to handle rich application-like experiences. Here are some of those cases:
The thing preventing us from using |
This issue was discussed in a meeting.
View the transcript[Consider deprecating all special live region roles except alert](#1104mcking: I'm wondering if we shouldn't first talk about other aria-live issues. ... we can probably get rid of a few. ... but my concern is that these things in themselves do not provide much. ... not semantically useful. ... e.g., region named log are better in a practice than a log that has no utility for screenreader users. Aaron: history: we didn't really know what we want to do live regions. ... polite came later. ... makes sense to get rid of marquee, timer. ... I think log might be useful. ... to know that the most recent stuff is on the bottom. jnurthen: then we should write that into the role. mcking: I'm not sure a role is the right way to achieve this goal. ... if you're exposing the log role, overwriting e.g., list semantics, then you're reducing accessibility. jnurthen: that's an author error. ... validators would log an error. scott: author should have div with role around list. mcking: there was weak vs strong semantics discussion. jnurthen: I think we shouldn't drop a role just because it's misused. mcking: but what is the value? jnurthen: e.g., Aaron's earlier point Aaron: screenreader could start at the end. Would that be helpful. mcking: not sure. don't know what AT devs would find useful. Aaron: me neither. I haven't watched users encounter log content. I'm guessing lots to improve. jnurthen: anyone disagree with deprecating marquee and timer? various: +1 jnurthen: the only theoretical use I see is if screenreader had a feature for "ignore these regions until I ask you" ... for timer. joanie: orca does this. ... allows the user to override author "creativity" Aaron: I didn't want to get hooked on log. I just wanted to give AT devs to chime in before we axe it. jnurthen: joanie do you care what role it is? or just aria-live? joanie: aria-live. ... deprecating would be fine. Aaron: historically, marquee came from MSAA having that. ... but let's kill it. carmacleod: Sarah had a good comment. <MarkMccarthy> From Sarah: "So far I'm not aware of any solutions using marquee nor have I recommended any, because the practical support isn't there. There is a need for some way of communicating regions with constantly updating information, though." carmacleod: there's a wcag rule with example. jnurthen: yes, those would need updating. mcking: will make a PR. |
I believe WebKit exposes all of those roles as live regions with the various default values for aria-live. We also know that web authors still use these conceptually. For example, marquees (conceptually, not necessarily the role or element) are used a chyrons, and I think this is likely to increase as on-demand audiovisual media moves increasingly to the Web. IMO, we should not remove ARIA concepts that are used conceptually, unless we think the implementation is somehow harmful or useless (like we did with ARIA drag-and-drop) |
In case it's useful, I did a bit of testing for marquees (due to the recent change of name required to name supported on marquee role). Safari/VO has good support, and VO is the only screen reader to read the @cookiecrook I had to look up chyron. 😄 |
Due to lack of support for |
Having some aria sugar to control update frequency easily for stuff like timers and live data plots would be extremely useful, this is not very well-handled by juggling between No experience or opinion about marquee. |
Consider deprecating log, marquee, status, and timer.
They have not proven useful in practice. They are not exposed by most (maybe any) screen reader. They sometimes degrade accessibility. They tend to add author confusion without solving any important accessibility problems.
Adding log to a table, for example, removes table semantics when the table semantics would be more useful than the log role. It would be better to name the table "chat log" if it contains a chat log.
Adding status to a div with status elements doesn't make the status area easier to find or identify. If locating the status area is important, then a div with role region and a name of status would be far better.
If there was a notion that screen reader with a read status function would utilize the status role for that purpose, it is not well thought out. For that to work, there would need to be a status relationship so that the screen reader knows whether or not the current point of regard is in a section of content that has a related status to read.
The text was updated successfully, but these errors were encountered: