Отправляет email-рассылки с помощью сервиса Sendsay

За 2019-06-18

[prg] Re: javascript. Как назначить гор.клавиши на нажатие клавиатурных клавиш

Здравствуйте, Александр.

Дело в том, что клавиши перехватывает скринридер, и поэтому вы не можете
их обработать. Скринридер перестает обрабатывать нажатия клавиш, когда
отключен виртуальный курсор, к примеру, включен режим form или режим
application. Вы можете принудительно активировать режим application
используя соответствующую роль <div role="application"> и когда фокус
попадет на элемент, который находится внутри элемента с этой ролью, вы
сможете обрабатывать все клавиши, однако, это не будет работать если
фокус находится в другом месте страницы, а оборачивать этой ролью всю
страницу крайне не рекомендуется, т.к. это отключит все привычные
горячие клавиши скринридера, то есть пользователь не сможет
использовать, к примеру, left/right arrowkeys чтобы изучать текст
посимвольно.

Если вам действительно нужно обрабатывать нажатие клавиш на всей
странице, то можно предложить пользователям самостоятельно включать и
выключать виртуальный курсор или его аналог.

Еще один вариант, воспользоваться атрибутом accesskey, который позволит
назначить клавишу на конкретную кнопку, это будет работать везде, но
пользователю придется нажимать какую-то клавишу модификатор, которая или
которые будут различаться в зависимости от браузера.

   2019-06-18 23:58:25 (#3621540)

[prg] Re: javascript. Как назначить гор.клавиши на нажатие клавиатурных клавиш

Здравствуйте, Грызунов Александр.

> Может как-то можно с использованием div, чтобы в любом месте нажал
> горячие клавиши и получил какой-то результат?

С div у вас не работает, потому что вы обрабатываете на нём событие
onkeydown, происходящее в тот момент, когда происходит нажатие клавиш на
сфокусированном элементе, а обычный div не фокусируется в принципе.
Чтобы ваш код заработал, вам надо сделать div фокусируемым при помощи
атрибута tabindex="0", затем переместить на него фокус браузера (не одно и
тоже с фокусом программы экранного доступа), ну и нажать целевую
клавиатурную команду.
Впрочем, есть подозрения, что это не совсем то, чего вы добиваетесь.
Если вас интересует в принципе отлавливание нажатия каких-то клавиш на
странице без привязки к сфокусированным элементам, то надо всей странице
назначить обработчик событий и ловить это там:

document.addEventListener('keydown', function(event) {
// Обработка клавиш по скан-кодам или названиям
});

В общем посмотрите документацию по методам addEventListener и
removeEventListener.
Успехов. Никита.

   2019-06-18 23:12:39 (#3621538)

[prg] javascript. Как назначить гор.клавиши на нажатие клавиатурных клавиш

Здравствуйте, уважаемые!

Вот код, который не работает с элементом div, но отлично работает с
применением поля редактирования input, что мне очень не нравится.
Может как-то можно с использованием div, чтобы в любом месте нажал
горячие клавиши и получил какой-то результат?

<html>
<head>
<title>тест2 горячих клавиш</title>
<script>
function press(event) {
if (event.keyCode == 74) {
alert("нажата клавиша английская j или русская о");
}
if (event.keyCode == 75) {
alert("нажата клавиша английская k или русская л");
}
if (event.keyCode == 76) {
alert("нажата клавиша английская l или русская д");
}
}
</script>
</head>
<body>

<div onkeydown="press(event)">
<p>Здесь нажимаем клавиши:</p>
<p>Английские: j, k, l</p>
<p>или</p>
<p>русские: о, л, д!</p>
</div>
</body></html>

с уважением
Грызунов Александр

   2019-06-18 20:45:39 (#3621532)