foundation-sites: [Dropdown Menu] Incorrect use of aria menu roles
The aria menu roles are intended for application menus, not navigation menus, and are problematic with Apple’s Voice Over features. WebAim provides this guidance:
“If the navigation links at the top of a webpage have incorrectly been assigned an ARIA role=‘menu’ (which is appropriate for application menus, not for navigation menus), this triggers forms mode, and the screen reader user cannot read with the arrow keys. The same thing can occur with other ARIA roles such as tab, dialog, grid, and toolbar.”
Source - https://webaim.org/blog/three-things-voiceover/ (ARIA, screen reader modes, and VoiceOver)
Overall, menu roles should be avoided for most websites, due to the nature of standards based web navigation.
Expected Behavior
When navigating the dropdown menu using Voice Over’s Start reading feature the navigation items should only be read aloud once.
Current Behavior
When navigating the dropdown menu using Voice Over’s Start reading feature the navigation items are read twice due to the use of role=menuitem.
Possible Solution
- Remove the
menubar,menuitem, andmenuroles. - Update the documentation to show navigation menus should always be wrapped in a
navelement.
Test Case and/or Steps to Reproduce (for bugs)
How to reproduce:
- Navigate to https://codepen.io/jimmynotjim/full/VBNGbY/
- Turn on voice over (cmd + f5)
- Click into the main content to avoid the Codepen chrome
- Turn on start reading feature (ctrl + opt + A)
- Voice Over reads the text content of each link twice, once as the menu item, and again as a link

Context
I discovered the aria menu roles while working on GoFundMe’s navigation which relies on Foundation’s dropdown menu.
Your Environment
- Foundation version(s) used: Foundation 6
- Browser(s) name and version(s): Any browser on Mac
- Operating System and version (desktop or mobile): macOS 10 (High Sierra) but I have observed this issue on every recent version of OSX and macOS.
- Link to your project: http://www.gofundme.com
Checklist (all required):
- I have read and follow the CONTRIBUTING document.
- This is a bug report or a feature request.
- There are no other issues similar to this one.
- The issue title is descriptive.
- The template is fully and correctly filled.
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Comments: 19 (5 by maintainers)
A client’s site of ours has been audited under WCAG 2.1 and the auditors pointed out this issue.
Thank you, and you’re welcome!!
Yes, a button with aria-expanded set to reflect the state of the dropdown is the core feature of the pattern. You could use a link, div, or span with role button if that is necessary.
They would be ordinary links with no additional ARIA.
The ARIA Authoring Practices Guide now includes an Example Disclosure for Navigation Menus.
This is an alternative pattern for site navigation bars. Comparing it to the menubar pattern:
The reason it is not a single Tab stop and does not support first-letter navigation is because the dropdown is a list of links, not a widget designed to intercept keyboard input from users of screen readers that have an interaction mode, e.g., JAWS forms mode.