Доступный способ переопределить вкладку в текстовом поле
Я хотел бы создать текстовое поле для кода, которое позволит пользователю нажимать Tab и Shift + Tab на отступ и outdent содержимое, тем не менее, я обеспокоен тем, что переопределение клавиши Tab создаст фокусную ловушку на странице для тех, кто пытается передвигаться по странице с помощью клавиатуры.
Есть ли доступный способ переопределить поведение по умолчанию клавиши Tab в <textarea>
?
Моя первоначальная мысль заключалась в том, чтобы использовать вкладку Ctrl + Tab и Ctrl + Shift + Tab , чтобы изменить фокус поля, но я не уверен в последствиях этого решения.
3 ответа
После прочтения большей части руководства WAI-ARIA 1.0 Authoring Practices , Я обнаружил, что существует явная рекомендация относительно того, как обрабатывать вставку вкладок в богатые текстовые редактируемые документы :
При желании, если разработчик желает предоставить возможность вставить вкладку в документ, рекомендуется использовать один из следующих методов.
- В меню выберите кнопки отступа и выхода. Клавиши быстрого доступа к кнопкам должны быть Control + M для отступа и Элемент управления + Shift + M для outdent.
- Предоставьте кнопку в меню для переключения использования вкладки между двумя режимами. Если эта кнопка используется, то Control + M рекомендуется в качестве сочетания клавиш для переключения кнопки.
Модификаторы ключа вкладки уже приняты для важных задач управления окнами:
Ctrl + Tab циклически просматривает вкладки в браузере, так как это обычный ярлык для циклического перехода через открытые документы в одном приложении. Shift + Ctrl + Вкладка идет назад. Alt + Вкладка переключается между запущенными приложениями.
Было бы неожиданным и очень раздражающим, если бы одна веб-страница влияла на ярлыки управления окнами. Я видел, как игроки флеш-видео делают это, и это не хорошо.
Asana делает это наоборот и использует вкладку как модификатор для своих ярлыков.
Еще одна вещь, которую следует учитывать, заключается в том, что для многих кодеров Tab является чисто мышечной памятью . Они не думают о том, какой ключ попал для отступов. Если вам потребуется что-то другое, кроме просто Tab , им, вероятно, будет трудно использовать его. Поэтому в некоторых случаях переопределение поведения по умолчанию может быть не так плохо, как альтернативы. Github делает это в своем редакторе онлайнового кода. Чтобы иметь дело с чем-либо, отличным от Tab , было бы очень неприятно для 99% их пользовательской базы. Их редактор был разработан для поддержки написания большого количества кода, поэтому, по-видимому, они считали это более важным, чем поведение по умолчанию.
Поскольку любое изменение простое использование Tab будет отличаться от того, к чему привыкли люди, вы можете использовать совершенно другую комбинацию:
Вы можете использовать Ctrl + Пробел и Shift + Ctrl + Пробел .
Для коротких фрагментов, которые являются частью более крупной формы, этот подход может быть хорошим компромиссом. На самом деле, я уверен, многие кодеры будут рады видеть какую-либо надлежащую поддержку отступов, кроме того, что сотни раз ударяли пробел.
В плане B будет добавлен переключатель режима . Позвольте пользователям решить, хотите ли они включить отступ редактирования с вкладкой Tab или оставить его по умолчанию. Это предотвратит застревание пользователей в текстовой области при входе в вашу форму, но также дает им легкий доступ к правильному отступу, когда им нужно написать несколько строк кода.
скачать источник bmml - Каркасы, созданные с помощью Mockups Balsamiq
Только захватить вкладку для поля после того, как что-то было напечатано . Таким образом, перемещение страницы с помощью сочетаний клавиш не будет нарушено.
Также дайте пользователю понять, что происходит, иначе поведение может показаться довольно неустойчивым. Предоставьте некоторую обратную связь, что вкладка теперь заблокирована для отступов, а не для навигации по форме. Ответ Koen Lngeveen имеет хороший пример, что-то вроде « Tab теперь может быть используется для отступов [release] ".