$ npm start
Open http://localhost:8989
. That it.
- angularjs is served from CDN
- version can be changed by providing an
ng
query param:
- version can be changed by providing an
ngAria
is replaced byklm-aria.js
which is included in this package and fixes compatibility with Angular 1.2.x.ngMessages
is served from CDN and works fine on both Angular 1.4.x and 1.2.x.- IE8 requires
Array.indexOf
to be polyfilled for this to work. Polyfill included.
- IE8 requires
-
Accessibility may also need UX input -- what practices give disabled users a good user experience with the tools they use? This requires experience with the tools. Examples may be a good starting point.
-
aria-live
attribute is read by screen reader as soon as a change is detected -
aria-live
changes on multiple elements will not read all changes if changes occur at the same time -
tabindex="-1"
is required for adiv
to be able to receive focus in Chrome (value may differ) -
aria-live
on a div is enough for Safari to allow focus -
tabindex
marks content asrole=group
and changes screen reader behaviour -
display: hidden
is excluded from screen readers -
content clipped using
css
clip
is still focusable and interferes with tab order for non-disabled users -
tabindex="0"
follows default tab order -
numbered
tabindex
(i.e.> 0
) is a bad idea as it is not relative but global, so to speak. If current focus is halfway down the DOM, andtabindex
of the next anchor is set to1
, you will actually skip it since you're already at index 50 or so. -
nested tab indices do not seem to be supported out of the box
-
marking an input with an error using
aria-describedby
gives the user feedback about an error when focusing on a form field (needs some idle time for the screen reader to use this) -
marking an input with an error using
aria-labeledby
next to the original label gives the user immediate feedback about an error when focusing on a form field -
Angular things
- ng-messages works on angular 1.2 but is broken in IE8. Polyfilling
Array.indexOf
seems to fix this. - ng-aria works on angular 1.2 if the
required
parser is fixed, currently checks forngModel.$validators.required
which is angular 1.3+, errors on absence ofngModel.$validators
. When skipping this$validators
check (which is pointless anyway) it runs fine. Pull request created.- for now a patched version (klm-aria.js) is added to the repo, which very likely will be the way to go for ng1.2.x.
- ng-messages works on angular 1.2 but is broken in IE8. Polyfilling
- Angular Material uses
ng-messages
to implement on the fly error feedback for screen readers, however no notification is given when the field changes from valid to invalid, is this an issue? - Angular's
ng-messages
setsaria-invalid="true"
on fields withrequired
even though Mozilla says that shouldn't be done until input is dirty