Доступный способ переопределить вкладку в текстовом поле

Я хотел бы создать текстовое поле для кода, которое позволит пользователю нажимать Tab и Shift + Tab на отступ и outdent содержимое, тем не менее, я обеспокоен тем, что переопределение клавиши Tab создаст фокусную ловушку на странице для тех, кто пытается передвигаться по странице с помощью клавиатуры.

Есть ли доступный способ переопределить поведение по умолчанию клавиши Tab в <textarea>?

Моя первоначальная мысль заключалась в том, чтобы использовать вкладку Ctrl + Tab и Ctrl + Shift + Tab , чтобы изменить фокус поля, но я не уверен в последствиях этого решения.

12 голосов | спросил zzzzBov 20 Mayam13 2013, 01:54:58

3 ответа


6

После прочтения большей части руководства WAI-ARIA 1.0 Authoring Practices , Я обнаружил, что существует явная рекомендация относительно того, как обрабатывать вставку вкладок в богатые текстовые редактируемые документы :

  

При желании, если разработчик желает предоставить возможность вставить вкладку в документ, рекомендуется использовать один из следующих методов.

     
  • В меню выберите кнопки отступа и выхода. Клавиши быстрого доступа к кнопкам должны быть Control + M для отступа и Элемент управления + Shift + M для outdent.
  •   
  • Предоставьте кнопку в меню для переключения использования вкладки между двумя режимами. Если эта кнопка используется, то Control + M рекомендуется в качестве сочетания клавиш для переключения кнопки.
  •   
ответил zzzzBov 27 J0000006Europe/Moscow 2013, 05:43:25
11

Модификаторы ключа вкладки уже приняты для важных задач управления окнами:

Ctrl + Tab циклически просматривает вкладки в браузере, так как это обычный ярлык для циклического перехода через открытые документы в одном приложении. Shift + Ctrl + Вкладка идет назад. Alt + Вкладка переключается между запущенными приложениями.

Было бы неожиданным и очень раздражающим, если бы одна веб-страница влияла на ярлыки управления окнами. Я видел, как игроки флеш-видео делают это, и это не хорошо.

Asana делает это наоборот и использует вкладку как модификатор для своих ярлыков.

Еще одна вещь, которую следует учитывать, заключается в том, что для многих кодеров Tab является чисто мышечной памятью . Они не думают о том, какой ключ попал для отступов. Если вам потребуется что-то другое, кроме просто Tab , им, вероятно, будет трудно использовать его. Поэтому в некоторых случаях переопределение поведения по умолчанию может быть не так плохо, как альтернативы. Github делает это в своем редакторе онлайнового кода. Чтобы иметь дело с чем-либо, отличным от Tab , было бы очень неприятно для 99% их пользовательской базы. Их редактор был разработан для поддержки написания большого количества кода, поэтому, по-видимому, они считали это более важным, чем поведение по умолчанию.

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

Вы можете использовать Ctrl + Пробел и Shift + Ctrl + Пробел .

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

В плане B будет добавлен переключатель режима . Позвольте пользователям решить, хотите ли они включить отступ редактирования с вкладкой Tab или оставить его по умолчанию. Это предотвратит застревание пользователей в текстовой области при входе в вашу форму, но также дает им легкий доступ к правильному отступу, когда им нужно написать несколько строк кода.

mockup

скачать источник bmml - Каркасы, созданные с помощью Mockups Balsamiq

ответил Koen Lageveen 20 Mayam13 2013, 10:54:29
1

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

Также дайте пользователю понять, что происходит, иначе поведение может показаться довольно неустойчивым. Предоставьте некоторую обратную связь, что вкладка теперь заблокирована для отступов, а не для навигации по форме. Ответ Koen Lngeveen имеет хороший пример, что-то вроде « Tab теперь может быть используется для отступов [release] ".

ответил Ilari Kajaste 27 J0000006Europe/Moscow 2013, 16:31:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132