Я работаю над HTML5-игрой, которая полностью состоит из элемента canvas, занимающего всю страницу. Я использую NV Access , чтобы проверить, как он работает с программами чтения с экрана. Используя скрытый div с role="alert"
, который я обновляю с помощью JavaScript, я могу заставить программу чтения с экрана читать текст.
Тем не менее, в NV Access уже есть клавиатурные команды практически для каждой клавиши клавиатуры, поэтому при попыткечтобы управлять игрой с помощью WASD, клавиш со стрелками или чего-то еще, кроме игрового контроллера, он перехватывает нажатия клавиш до того, как игра сможет их обработать.
Я установил role="application"
наи тело страницы, и холст в отдельных тестах и ни одна позиция, казалось, ничего не изменили.
Единственный контекст, в котором я мог получить NV Access для управления вкладкой браузера, - это добавление скрытого текстового поля на страницу исосредоточив внимание на том, что работало, но имело побочный эффект чтения с экрана при каждом нажатии клавиши, что приводило к тому, что перемещение персонажа всегда сопровождалось звуками "ss sssssssssss. dd dddddddddd."
По сути, это то, как выглядит страница игры:
<body role="application">
<div>
<div id="screenRead" role="alert"></div>
<canvas id="background"></canvas>
<canvas id="foreground"></canvas>
</div>
</body>
В идеале все нажатия клавиш (за исключением действий управленияТакие, как Alt + Tab, Ctrl + Tab и т. д.) будут приниматься самой вкладкой браузера, а не распознаваться программой чтения с экрана. Поскольку элементы управления проигрывателем настраиваются, добавление исключений для нескольких клавиш не будет работать (и, во всяком случае, aria-keyshortcuts
не сработало для этого контекста).