Listed below are frequently asked questions. If you have a question that is not answered here, please start a discussion.
Should I use a button or a link?
There is one special type of button that can also change the URL. The form submit button. This button will GET or POST to the URL specified in the form's action property.
Correct use of link and button is very important for accessibility. When a user hears "button", they expect the click to perform some action on the current page. When the user hears "link", they expect the click to take them to a new page, or a new location on the current page.
How do I add content exclusively for screen readers?
Apply the .clipped class (or its rules) to the element that you want to be visually hidden. The element will remain accessible to screen readers on desktop and mobile devices.
When using Safari I can’t TAB through the links on the page. What’s going on?
You must enable the following option in Safari's preferences:
Safari -> Preferences -> Advanced -> Accessibility -> "Press Tab to highlight each item on a webpage"
And here’s how to do the same for Firefox:
System Preferences -> Keyboard -> Keyboard Shortcuts -> Full Keyboard Access -> "All controls"
I'm using Microsoft Remote Desktop for Mac to test with JAWS on a Windows machine. My keyboard does not have an INSERT key. How do I send the INSERT command?
It is true that Mac keyboards do not have an INSERT key, and this is a known issue with MRD. The workaround is to install a hotkey application such as Karabiner.
Once installed, check the checkbox "Enable at only Remote Desktop Connection Client - Use F12 as insert".
Now you should be able to activate any JAWS commands that require the INSERT key (e.g. opening the Links List).
We are not going to go out of our way to cater for these individuals.
However, there are other unknown factors which can potentially place the user into a non-JS or partial-JS state, for example:
A script fails to load due to poor connectivity
A script executes much later or slower than expected
A script fails due to incompatible browser support
The only realistical way of defending against the unknown is by building our pages in the Progressive Enhancement way; we make sure our most important content and functionality1 is always available to users in any browser, in any situation.
How do I know where page headings are required?
Identifying page headings is the responsibility of the design team.
As a rough guideline, know that every logical, visual block of the page must have a heading.
Sometimes a heading will be hidden visually offscreen and available only to screenreaders. Again, defining these types of headings is the responsibility of the design team.
Should SPACEBAR or ENTER key activate links & buttons?
Both the SPACEBAR and ENTER key should activate a button.
Only the ENTER key should activate a link. Pressing the spacebar whilst keyboard focus is on a link should scroll the page down.
Should I use aria-label or aria-labelledby?
Use aria-label in cases where a text label is not visible on the screen. If there is visible text labeling the element, use aria-labelledby instead.
Should I use radio, checkbox or select?
A radio group allow only one choice to be selected.
A checkbox group allows zero or more choices to be selected.
A select group allow one or more choices to be selected.