БлогNot. Определяем "коды клавиш браузера" или почему F1 = 112, а не 59

Определяем "коды клавиш браузера" или почему F1 = 112, а не 59

Вопрос был примерно таким, воспользуюсь им как поводом для задачи:

Почему в DOS код клавиши F1 - 59, а в Windows - 112, и можно ли обрабатывать коды клавиш кроссплатформенно?
Отличаются ли, например, коды клавиш браузера и программы на C#?

а источником послужило, похоже, вот это приложение к старому паскалевскому учебнику.

В принципе, по ссылке как раз уже и написан ответ, но если пояснить подробней, то скан-код нажатия у клавиши F1 = 0x3B = 59, а ASCII-код как раз = 0x70 = 112, он - вполне "кроссплатформенный" и может использоваться одинаково в самых различных системах программирования, от бразуеров / HTML / Javascript до компонентных библиотек вроде VCL или .NET.

При этом работать с кодами клавиш в онлайн-приложении нам будет не сложнее, чем в stand-alone программах.

Достаточно назначить нужному элементу HTML (или всему телу документа <BODY>) обработчик одного из событий клавиатуры (функцию с параметром-объектом e, содержащим информацию о событии), затем отменить, при необходимости, стандартную обработку, чтобы браузер не "забирал себе" клавиши и, наконец, работать со значением e.keycode:

var body = document.querySelector('body');

body.onkeydown = function (e) {
 if ( !e.metaKey ) { //если не зажата клавиша
  e.preventDefault(); //отменить обработку по умолчанию
 }
 var s = '<p>Десятичный код: ' + e.keyCode + "</p>\n";
 s += '<p>16-ричный код: ' + '0x'+parseInt(e.keyCode).toString(16)  + "</p>\n";
 s += '<p>Описание: ' + 
  keyCodes[e.keyCode] || 'неизвестный код... расскажите о нём кому-нибудь :)' + "</p>\n";
 document.getElementById('keyInfoId').innerHTML = s;
};

По сути, это почти весь исходник яваскрипт-сервиса для получения кодов клавиш, не хватает только объекта keyCodes с текстовыми описаниями названий клавиш, его легко получить из исходника страницы со скриптом, показанным далее в работе.

Для безопасности сервис работает на отдельной странице, в Internet Explorer тоже должно выполняться.

 Коды клавиш бразуеров, HTML, DOM, Javascript, открыть сервис в новом окне (вкладке)

06.01.2018, 13:57 [2832 просмотра]


теги: javascript числа сервис

К этой статье пока нет комментариев, Ваш будет первым