powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос по работе с нажатиями клавиш на JS
1 сообщений из 1, страница 1 из 1
Вопрос по работе с нажатиями клавиш на JS
    #39838598
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю интерфейс для ТВ-устройства. Клавиатуры и мышки нет, есть пульт. Скан-коды кнопок пульта известны.
Обрабатываю нажатия примерно так (в html-документе есть div#kinput с tabindex=0):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
...
function keydown(e)
{
	if (false) {
	} else if (e.ctrlKey && (e.keyCode == 112)) { // red button
		document.getElementById('link-speedtest').focus();
	} else if (e.ctrlKey && (e.keyCode == 113)) { // green button
	} else if (e.ctrlKey && (e.keyCode == 114)) { // yellow button
	} else if (e.ctrlKey && (e.keyCode == 115)) { // blue button
		document.location.reload(true);
	} else {
		return false;
	}
}
set_kinput(keydown);

function set_kinput(keydown, keypress, keyup, keychar)
{
	var kinput = document.getElementById('kinput');
	if (keydown) kinput.onkeydown = keydown;
	if (keypress) kinput.onkeypress = keypress;
	if (keyup) kinput.onkeyup = keyup;
	if (keychar)
	{
		kinput.onkeypress = function(event)
		{
			var char = undefined;
			if (event.type == 'keypress')
			{
				char = null;
				if (event.which == null) { // IE
					if (event.keyCode >= 32) char = String.fromCharCode(event.keyCode);
				} else if (event.which != 0 && event.charCode != 0) { // все кроме IE
					if (event.which >= 32) char = String.fromCharCode(event.which);
				}
			}
			return keychar(char);
		};
	}
	kinput.focus();
}


При нажатии на красную кнопку выбирается определенная ссылка (просто активируется, без перехода), при нажатии на синюю кнопку страница обновляется.
Проблема в том, что когда выбирается определенная ссылка, то теряется фокус с #kinput и клавишные события перестают обрабатываться. А запретить смену фокуса нельзя, иначе пользователь не сможет выбирать ссылки.
Как в таких случаях принято поступать? Вешать обработчик на все интерактивные элементы?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос по работе с нажатиями клавиш на JS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]