prose/prose — pull request #680 by ndarilek (2014-03-13 15:42:22+00:00)
Title: Use textarea for editor, vastly improves accessibility.

Using a div tag for your editor causes a number of accessibility issues:
* The area is not reported as a text area to access technologies. As such, that it can be edited is not obvious.
* Arrowing around does not provide meaningful feedback. For instance, the up and down arrows don't speak the newly-reached line.
* CodeMirror eats the tab key, making keyboard navigation off of the field impossible. Screen readers generally offer keystrokes to bypass a field's key handler so something that normally consumes navigation keys can be exited, but this only works on form fields.

I've replaced the div with a textarea. The alternative is maintaining code that duplicates the accessibility functionality of textarea, which is a huge mess.

In preliminary testing, this vastly improves the accessibility of Prose. Whereas before the editor control was very hit-or-miss and gave poor feedback, I'm now able to edit documents much more easily.

I myself am blind, so the one area I can't help with is appearance. I left the existing CSS class intact, but I leave it to your visual designers to tweak the appearance.

Perhaps this seems like a small thing, but you really do set yourselves up for worlds of hurt when you swap out a textarea with a div. The arrows are just one case that isn't covered. Backspace and Delete don't speak the character that was erased. Selection commands don't provide spoken feedback as to what gets selected. Go with a div and you'll need to write all this custom key handling, and I promise you won't handle it in the same way screen readers do, which will cause confusion. :) The work to restyle the textarea is vastly easier.