-
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
Clarify usage of aria-haspopup #1024
Comments
To help move discussion on this along I created a test page noting how VoiceOver, JAWS and NVDA expose (and by that I mean mostly don't) any of the specific pop-up values. In most cases, the Only with JAWS with Chrome and Firefox did the special designations get announced on links. |
NVDA issue for aria-haspopup is nvaccess/nvda#8235 |
JAWS issue for aria-haspopup is FreedomScientific/standards-support#33 |
i'm going to move this to 1.3. I don't think there's time, nor urgency, to tackle this in 1.2. |
For whatever it is worth, the latest versions of VoiceOver for iOS and MacOS now fully support all values for |
that's great to hear. thanks @mfairchild365 |
Just out of curiosity, how important is it to explicitly announce the popup type? If a user is on something with a popup, and activates that popup and winds up in a grid, will the user be completely confused if the screen reader failed to notify them in advance that a grid would appear? As a sighted user, I don't know in advance what is going to pop up when I activate something with a pop up. I just activate it and see what happens. If a grid appears as a result, my conclusion is that the grid appeared because it's the popup. To me, tacking on the type seems like it might be unwanted chattiness. If it's truly important, I can add announcement in Orca. But I was operating under the assumption that this information was mainly of use to the screen reader itself (e.g. an explanation regarding why a grid is claiming to be showing). |
Related question: Combo boxes by default pop up a listbox. Is it considered a screen reader "failure" if it doesn't announce that a combo box opens a list box? Were I the user, my reaction to that announcement might be "of course it does. why are you telling me this?" |
That's a really good question. There are cases where I think it is important to explicitly announce the popup type. For example, many ARIA based It may be less important for other values, but I think there are situations where it is very important. |
As long as the screen reader doesn't say "menu button" when |
and there in lies the source of this issue being created. :) |
Ok, I just implemented support for it in Orca master: https://gitlab.gnome.org/GNOME/orca/commit/25c64254 Edit: because duh https://gitlab.gnome.org/GNOME/orca/commit/8368b43. Long day. Many Orca users (at least those on the Orca mailing list) run Orca master in their production environments (bless their adventurous hearts). Let's see what they say (if anything). |
Good point. In the case of the APG Collapsible Dropdown Listbox Example, NVDA (for example) says "menu button", which is almost correct, and even has similar keyboard interaction, but doesn't tell the user that they will be "selecting the button's value from a list". (which is kind of an important thing to know, and makes me wonder whether that example should be a combobox instead :) ). Edit: I suppose if NVDA had instead said "Neptunium popup list button" or "Neptunium button, opens listbox", then that would be an indication that the chosen list item would end up as the button's text. |
Nice! Would love to know what the Orca users say. Please do let us know. |
When an Orca user (using the stable version) encounters that button, Orca says the following:
When you hear that you know what you need to do conceptually, namely choose an element. In addition, you know what the current choice is, namely Neptunium. If Neptunium ain't your element, what do you do? It's clear that you push the button. When the same Orca user presses the button, the listbox appears and Orca says the following:
Depending on user settings, Orca may also tack on:
That should be enough for the user to know what to do in the list. I will grant you that failure to present an equivalent of the downward pointing triangle means there is a moment when sighted users have more info than blind users. But I don't personally believe that one moment is significant: You have to choose an element, you're on the thing which lets you choose elements, you activate it and the element-choosing-widget is described so you can choose the element. But now, Orca master tacks on:
That makes presentation longer. Speech output is already slower than visual output. And as I describe above, I'm not convinced that longer presentation buys the user anything. 🤷♀️ |
Thank you, @joanmarie - that is insightful and you bring up many good points. I agree that in the specific APG example, there is enough information for a user to infer that this button probably opens a list box or some other thing that lets me change the value. I'm less willing to say that holds true for other situations where the name and/or value might not be as clear. Additionally, explicitly conveying the fact that this button opens a listbox might lessen the cognitive load required for someone to understand what they need to do to adjust the value. That's just a hunch, and I don't know that to be true. I love that you made the change in an effort to collect feedback from end-users. I'm looking forward to hearing the results of that. IMO, that sort of research is one of the best ways to drive decisions like this.
I'd like to better understand this statement. How would this information affect the internals of how a screen reader works? If an author did not provide this attribute, how might that impact the experience of the end-user if it is just used for the screen reader itself? |
you mean the attribute, or specific token values of the attribute? |
Good question. Both. |
I suggest that the problem is not that NVDA fails to announce the other popup types, but that it specifically mentions one of them (arbitrarily chosen by tech history), but not the others. If the rationale for not announcing the popup role is to reduce chattiness, why does NVDA announce "menu" or "submenu" (which isn't even an aria role) in the first place? Isn't that 'chattiness' too? Either announce all the enumerated popup roles mentioned in the spec, or announce none at all, and make a briefer, more generic announcement about 'a' popup. No matter what, a dialog is very much not a menu. Can't even get around this mislabelling with |
Not a peep. So they're not bothered by it at least. Though I don't know how much they're encountering it in the wild. |
I think it is critical to talk about behavior in addition to announcement. Please note that aria-haspopup="dialog" results in forms mode being enabled upon invocation in Jaws, and I believe insert mode in NVDA as well. This is highly problematic because the resulting modal dialog, let's say, is then not navigable as a document, independent of its role. This is something that comes up quite a bit on websites we work with developers on where they feel they are doing the right thing, and we tell them, don't at all implement aria-haspopup="dialog" because you will drastically degrade the experience for most screen reader users. Regarding announcement, it is a good idea to give a priori information to the user when possible, I feel, because it helps set expectations. The metric I always use here is that for an eyes-free user, the cost of undo is almost always higher, often times much higher, than for a mouse or otherwise sighted user (just choosing these two groups for argument, obviously there are many more). Therefore, a minor annoyance can be dismissed with a flick of a wrist, but may take tens of seconds or minutes for a screen reader user to achieve the same result. As a result, this heads up, I feel, is both useful and honestly necessary. Note that native platforms sometimes have paradigms for this, such as the '...' indicating a new window in MS Windows buttons. Also, I just wish to say major props to Joanie for implementing this in Orca. Thank you for doing so. |
I have tested this in Chrome and Firefox, with JAWS 2019, JAWS 2020, and NVDA 2019.2.1 Neither for links nor for buttons did using @sinabahram: Do you have a link to the page where the problem occurred? I suspect that the cause for switching to forms mode was different from having |
RE forms/insert mode with aria-haspopup, can you please provide a test page, so I can compare results over here? We’re also going to code up some samples over here to make sure we can reproduce the behavior reliably, and I’ll share those as well.
|
@sinabahram : this is my test page |
Thanks for the test page. I just replicated the behavior with Jaws and Chrome, latest versions.
I hit that button once, and it turned on forms mode, then turned it off, and then focussed the heading. I then closed the dialog by hitting yes or no, and I then just reproduced the exact same actions; however, this time, the forms mode didn’t toggle off.
|
This is strange, I have no change to forms mode (JAWS 2020, Chrome 79). |
next steps, @mcking65 and I need to work on a suggested PR. another issue needs to be created (by me) regarding needing to inform users that a "popup" will have light dismiss behavior. |
So have you decided what the change will be? What will the PR advise and contain? |
@guyhickling you can read the discussion at https://www.w3.org/2022/02/03-aria-minutes.html#t07 |
Those minutes are incredibly hard to read. Only thing I could make out that there is no consenus at all. Issues are IIUC mapping to the accessibility API of the OS, backwards compatibility with the spec, add properties or roles to a new version of the spec, implementation problems of current screen readers, lack of definition on what a pop-up actually is * and if non-sighted users need additional information.
|
I used the term 'suggested' purposefully when describing the todo to create the PR. the point of working on a suggested PR is to help get consensus. Matt and I have ideas of where this should go, but they're not 100% aligned. We're going to work together to align them as best we can and then make the suggestion so that we have something concrete to talk about with the group. otherwise, we may all just continue to circle around the solution. |
Thank you for going into all that troubles. |
Just chiming in here, in 2022, this attribute has been around for a while, and still every time we see a screen reader user encountering I think I'm going to advise we move away from using this on buttons that launch modals in favor of screen reader only text or |
For ages, as a screen reader user on Windows, a major queue of notifying |
Hello everyone, thank you for raising this topic. It is an interesting one with a lot of comments and a very long discussion (I would have noticed it before). As always there are a lot of insightful hints, comments and thoughts. From @sinabahram:
+1, I totally agree with this. From @mcking65
This is good to know but at the same time, in my opinion, it's not intuitive from specs. The "dialog" value seemed a bit off-topic considering the entire list of values and that's also why I've always thought about it as a useful hint to inform AT (screen reader) users about something (dialog) that will be visually displayed on screen after interacting with the element. In my mind, this interpretation was also supported by the list of "Used in Roles", which contains for example the link role (which usually is not used to display "menu, listbox, tree or grid" elements). That said, with the combobox information and assumption, the list of values makes more sense. From JAWS-test
And answer from guyhickling
b) Telling users in advance lets them know what should have happened, in the event that it does not. The greatest problem with dialogs is that most developers do not know how to make them accessible. As also stated previously by @sinabahram, in my opinion this is a key point. Different experience requires different cues. I'll expand this in my final thoughts. From @zelliott
That's a very good question. From @scottaohara
This might be an interesting proposal, but what the disability community - especially VO users which might be more familiar with something that currently works - thinks about it? Do they feel comfortable from no longer receiving hints about buttons that trigger dialogs? Are them somehow impacted from removing this support? From @mitchellevan
+1, I think this is what AT users expect. From @scottaohara
As you said, excluding combobox elements, there are still many instances of content that pops up; fly-outs, dialogs (modal and non-modal), tooltips (meant as generic element that appears on focus or over - sometime might be just a description but some other might contain operable controls or multiple details, e.g. password requirements), just to name a few. That said, I'm not convinced that aria-haspopup="dialog" implicitly means that tabbing away from the component results in dismissing the popup. In the document there is no definition of "popup"; if this is the intent might be worth adding it. Per aria-haspopup property definition
Based on that, it might be used on all scenarios I've listed (fly-outs, modal and non-modal dialogs, etc.), which might not be dismissed automatically after tabbing away. From @daemoncron
This is interesting; I understand and agree with that if using JAWS or NVDA. That said I experienced the opposite with real VO user testing activities. My final thoughts: Similarly, when a link is opening a new window (target="_blank"), it's recommended to inform AT users about that (even if there are no visual cue), as for a blind user it might require more time to understand what happened and to return to the previous page (a bit off topic but I still don't understand why there is no way to map the target attribute to make AT announcing this detail). Is it not similar to a button element that opens a dialog? Maybe less intrusive but still something not immediate. Consequently, I'm not sure that providing an AT hint only when it's visually available is fair enough, and I don't think that moving back to just three values ("true", "menu", "false") is ok, unless there is another way to convey that detail. |
here are some comments from scott: https://gist.github.com/scottaohara/7ef3f2882c911824ac2da35294f6beb9 |
Haven't tested personally, but it looks like latest JAWS (FreedomScientific/standards-support#33) and NVDA (nvaccess/nvda#14709 ) have fixed this now. Table (not updated for NVDA yet, maybe it hasn't shipped a version with the fix): https://html5accessibility.com/stuff/2023/06/20/aria-haspopup-less-is-more/ |
Has this been resolved or is this still an issue? This issue is really long - if something still needs to be done could someone please create a PR for what needs to be done to resolve. |
Based on https://html5accessibility.com/stuff/2023/06/20/aria-haspopup-less-is-more/ can we now close this? |
Yes.
Because I agree with the above, and because this minimum support or better is now in latest versions of screen readers with widespread use, I say this issue should be closed without a change in ARIA. A content creator might consider it important to support older screen reader versions, and therefore continue avoiding the newer values such as |
i think for now this can be closed. still things to consider with the actual practicality of this attribute... but those can be new issues. |
I have always thought the following part of the spec confusing,
because authors MUST is followed by;
These two paragraphs should be rewritten as; "Elements with the role combobox have an implicit aria-haspopup value of listbox. If the combobox popup element has a role other than listbox, authors MUST specify a value, tree, grid, or dialog, for aria-haspopup that corresponds to the role of its popup." Which brings me to wonder how relegating aria-haspopup to true/menu only will affect role combobox. |
This spec language is technically accurate as-is, because "implicit" does not mean informally implied or hinted at. It means the property has a specific value, programmatically determined from the element's role, as described in Implicit Value for Role. Is it as clear as it could be? Maybe not... So I'd suggest requesting that clarification as a new issue, or go straight to a PR. This should be separate from #1024, so #1024 can be finally closed.
I don't foresee that happening. Such a change in spec was being considered in past years, when some major screen readers were either not announcing information for non- |
this issue is closed. |
Coming out of our discussion of #999
We should review
aria-haspopup
and determine if there should be stronger guidance about what the expectations are for when the attribute should be used, and what sort of variations in behavior should be expected when using the different allowed values.For quick reference, the current values are:
Specifically regarding the
dialog
value, it was mentioned on the call that when this should be used is ambiguous right now.As a quick sampling of how this particular value is presently communicated by screen readers when used on a
button
element:Latest JAWS and NVDA both treat a
button aria-haspopup=dialog
as a menu button, and produce announcements as if the value weretrue
ormenu
.iOS VO announces "shows popup. double tap to activate a picker".
macOS VO announces it as a "popup button" similarly to a
select
element's announcement.The text was updated successfully, but these errors were encountered: