При обработке событий клавиатуры в JavaScript большинство сценариев и приложений, как правило, придерживаются базового диапазона клавиш, обеспечивающих доступ к ядру — клавиши Tab для последовательной навигации, клавиши со стрелками для перехода вниз или двухмерной навигации, а также Enter и Клавиши пробела для нажатия и выбора вещей.
Это все хорошо, но есть и другие общие клавиши, которые вы могли бы рассмотреть, которые могут значительно улучшить удобство использования, предоставляя больший контроль — клавиши Page-up и Page-down можно использовать для быстрой навигации по большим группам данных, в то время как клавиши Home и End могут использоваться в качестве ярлыков для первого и последнего значения.
Большинство клавиатур Windows имеют специальные клавиши для них, но они также работают на Mac через комбинации модификаторов. Например, на моем Macbook есть дополнительная клавиша fn (функциональная), и она используется в сочетании с четырьмя клавишами со стрелками (например, fn + up для Page-up и fn + left для Home).
Ползунок управления
Ползунки являются отличным примером того, где эти клавиши могут быть использованы для хорошего эффекта. Клавиши со стрелками обычно используются для увеличения и уменьшения ползунка на одно значение, но мы также можем использовать клавиши Page-up и Page-down для изменения значения в большей пропорции, а также клавиши Home и End для установки ползунок до минимума и максимума.
Следующий код является выдержкой из ползунка поиска видеоплеера:
switch(true)
{
case (e.keyCode == 38 || e.keyCode == 39) :
if(++value > max)
{
value = max;
}
break;
case (e.keyCode == 37 || e.keyCode == 40) :
if(--value < 0)
{
value = 0;
}
break;
case (e.keyCode == 33) :
if((value = value + Math.round(max / 10)) > max)
{
value = max;
}
break;
case (e.keyCode == 34) :
if((value = value - Math.round(max / 10)) < 0)
{
value = 0;
}
break;
case (e.keyCode == 36) :
value = 0;
break;
case (e.keyCode == 35) :
value = (max - 1);
break;
}
Оператор switch
keyCode
Там, где это применимо, изменения значений ограничены, поэтому они не превышают своих пределов (например, поэтому вы не можете искать за пределами конца).
В этом случае ползунок был написан с нуля, чтобы включать в себя эти дополнительные ключи, но это тот тип улучшения сценариев, который легко модифицировать, потому что все, что ему требуется, — это дополнительные условия для кода обработки ключей, который сценарий уже должен содержать.
Обработка ключевых событий
Для справки, вот все значения keyCode
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
Обработка этих клавиш ничем не отличается от обработки любых других клавиш навигации; если вам нужна дополнительная информация об этом, ознакомьтесь с моей предыдущей статьей: Практическая доступность JavaScript .
Единственное, что я хотел бы здесь упомянуть в явном виде, это то, что навигационные клавиши могут обрабатываться только событиями keydown
keyup
, а не событиями keypress
События keydown
фокус находится внутри вашего виджета , чтобы не блокировать их все время.
Интерпретация ключевых поведений
При использовании этих дополнительных ключей — или любых других ключей — важно остановиться и подумать, что будут означать нажатия клавиш в контексте вашего сценария. Хотя у нас есть четкое представление о том, что, например, означает ключ Home в контексте текстового редактора или текстового редактора, это может быть не так очевидно в другом поведенческом контексте.
Слайдер — хороший пример, потому что очевидно, для чего они должны использоваться, и я думаю, что мы можем взять этот конкретный пример, чтобы получить более общий набор принципов:
- Дом означает минимум, начало или первый
- Конец означает максимум, конец или последний
- Подкачка означает увеличение на чанк или переход к следующему разделу или группе
- Страница вниз означает уменьшение на часть или переход к предыдущему разделу или группе
Так, например, в контексте представления сообщений почтового приложения клавиша Home может перейти в начало списка, а клавиша End — в конец. Или в контексте управления громкостью музыкального проигрывателя, Page-up может увеличить громкость на четверть или половину, а Page-down делает обратное.
У вас будет лучшее представление о том, как такие ключи относятся к вашему приложению. Для этого нет жестких и быстрых правил и нет абсолютных соглашений, это всего лишь пример того, чего достигают существующие действия клавиатуры и как можно использовать эти дополнительные нажатия клавиш, чтобы сделать это проще или быстрее.