Skip to content
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

Please support aria-current #6358

Closed
carmacleod opened this issue Sep 7, 2016 · 18 comments
Closed

Please support aria-current #6358

carmacleod opened this issue Sep 7, 2016 · 18 comments
Assignees
Labels
ARIA feature/browse-mode issue-tracking/crbug This issue is also tracked by another issue tracker: 'crbug' p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority
Milestone

Comments

@carmacleod
Copy link

carmacleod commented Sep 7, 2016

Browsers are "getting there" with support for aria-current: https://rawgit.com/w3c/aria/master/aria/aria.html#aria-current

Support is in for (most of) Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=609362
and Webkit/VO: https://bugs.webkit.org/show_bug.cgi?id=155469
Still waiting on FF: https://bugzilla.mozilla.org/show_bug.cgi?id=1104947

Would be nice if AT could support this, too, so that devs don't have to hack in a roving aria-label="current page" or similar.

@carmacleod
Copy link
Author

Update: JAWS 18 Beta now supports aria-current.
Just FYI. ;)

@derekriemer
Copy link
Collaborator

Adding the browse mode label.

@feerrenrut
Copy link
Contributor

Some thought will need to be put into the UX for this. But I think we can prioritise this as P2 for now. @jcsteh We will need to add this to the aria 1.1 project.

@feerrenrut feerrenrut added the p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority label Jan 19, 2017
@jcsteh
Copy link
Contributor

jcsteh commented Jan 19, 2017

I think we can basically just add a new state "current" and report it whenever it is present.

@feerrenrut
Copy link
Contributor

Problem is that the spec for aria-current has several values other than true: page, step, location, date, time. I'm not sure what the use case is for these, however the expected implementation seems to be along the lines of "current page".

@feerrenrut feerrenrut self-assigned this Jan 20, 2017
@jcsteh
Copy link
Contributor

jcsteh commented Jan 23, 2017

My bad. I neglected to realise aria-current now has several values.

I discussed this with several people. I think we should report "current page", "current location", etc. as the expected implementation suggests. I have my concerns about this; e.g. it seems counter-intuitive that we report a "current step" but no other steps get reported as "step". Nevertheless, this is what other screen readers are doing and it does seem like this is the best experience we can get here.

@goetsu
Copy link

goetsu commented Jan 25, 2017

VoiceOver also support it cf https://ljwatson.github.io/design-patterns/aria-current/

feerrenrut added a commit that referenced this issue Feb 23, 2017
Incubate PR #6860 to fix issue #6358
Merge branch 'i6358-supportAriaCurrent' into next
@nvaccessAuto nvaccessAuto added this to the 2017.2 milestone Mar 14, 2017
feerrenrut added a commit that referenced this issue Mar 14, 2017
Support for aria-current in focus mode for chrome

Fixes #6358
feerrenrut added a commit that referenced this issue Mar 14, 2017
For PR #6761 - Web page menu items (menu item checkbox's and radio buttons) can now be activated while in browse mode.  Issue #6735
For PR #6866 - Excel sheet name reporting is now translated. Issue #6848
For PR #6884 - Pressing ESC while the configuration profile "Confirm Deletion" prompt is active now dismisses the dialog. Issue #6851
For PR #6895 - Cell border information can now be reported in Microsoft Excel by using `NVDA+f`. Issue #3044
For PR #6860 - Added support for aria-current attributes. Issue #6358
@bramd
Copy link
Contributor

bramd commented May 17, 2017

If I read the spec correctly, this should also be used where the current page is indicated, but is not a link. For example in a breadcrumb. I just implemented this with aria-current="page" on a span and it diesn't seem to work in NVDA next and Firefox.

@jcsteh
Copy link
Contributor

jcsteh commented May 18, 2017

It does work on a div, but not a span. It seems both Firefox and Chrome are pruning spans from the tree even when they have aria-current. We'll need to file bugs against both browsers.

@bramd
Copy link
Contributor

bramd commented May 18, 2017

I just filed a bug against Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1365904

@jcsteh
Copy link
Contributor

jcsteh commented Jun 8, 2017

Filed Chrome issue: https://bugs.chromium.org/p/chromium/issues/detail?id=730917

@jcsteh
Copy link
Contributor

jcsteh commented Sep 4, 2017

Filed Chrome issue: https://bugs.chromium.org/p/chromium/issues/detail?id=730917

Verified fixed in Chrome Version 62.0.3201.2 (Official Build) canary (64-bit).

@jcsteh
Copy link
Contributor

jcsteh commented Nov 8, 2018

I just filed a bug against Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1365904

Fixed for Firefox 65.

@sarahannnicholson
Copy link

I found in my single page react application, when the url changes because of a link within the side (eg. on the nav) that NVDA reads the old active nav item.

It's almost as if in a single paged react app that even though the url and the DOM have the correct attributes on the correct elements, NVDA doesn't update until I refresh the page.

@jcsteh
Copy link
Contributor

jcsteh commented Aug 15, 2019

I found in my single page react application, when the url changes because of a link within the side (eg. on the nav) that NVDA reads the old active nav item.

What browser did you test in? This works as expected for me in Firefox:

data:text/html,<button aria-current="true">a</button><br><button>b</button><script>document.addEventListener("click", function(event) { document.querySelector("[aria-current=true]").removeAttribute("aria-current"); event.target.setAttribute("aria-current", "true"); });</script>

Pressing the button that isn't current makes it current and that gets reflected in browse mode.

This doesn't work in Chrome, however.

Investigation note: My guess is they're not firing IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED when aria-current changes, but I haven't verified this.

@milindannadate
Copy link

I found in my single page react application, when the url changes because of a link within the side (eg. on the nav) that NVDA reads the old active nav item.

What browser did you test in? This works as expected for me in Firefox:

data:text/html,<button aria-current="true">a</button><br><button>b</button><script>document.addEventListener("click", function(event) { document.querySelector("[aria-current=true]").removeAttribute("aria-current"); event.target.setAttribute("aria-current", "true"); });</script>

Pressing the button that isn't current makes it current and that gets reflected in browse mode.

This doesn't work in Chrome, however.

Investigation note: My guess is they're not firing IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED when aria-current changes, but I haven't verified this.

Hi jcstech,

Using NVDA/Chrome i am able to replicate this issue.
I am facing same issue in my vue single page application.

@mfairchild365
Copy link
Contributor

@milindannadate I filed a Chromium bug re changes not being conveyed https://bugs.chromium.org/p/chromium/issues/detail?id=1099323

@feerrenrut feerrenrut added the issue-tracking/crbug This issue is also tracked by another issue tracker: 'crbug' label Jun 26, 2020
@mfairchild365
Copy link
Contributor

Support is scheduled to land in Chrome v89. I tested it with NVDA and Chrome Canary and it works great. https://bugs.chromium.org/p/chromium/issues/detail?id=1099323

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ARIA feature/browse-mode issue-tracking/crbug This issue is also tracked by another issue tracker: 'crbug' p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority
Projects
None yet
Development

No branches or pull requests

10 participants