RTL (справа налево) клавиатурная навигация в HTML <TextArea> - PullRequest
4 голосов
/ 29 июля 2010

Я работаю с некоторым HTML, который содержит <textarea>. В настоящее время я тестирую ввод смешанных символов LTR и RTL, таких как "abcأبجABC".

<div class="mycomment" dir="RTL">
  <form method="get" action="{$self}">
    <input type="hidden" name="Id" value="{$entry}" />
    <textarea name="comment" class="commentarea"/></textarea>
    <br />
    <input class="button" type="submit" value="{$postlink}" />
  </form>
</div>

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

Есть идеи, как мне обойти или исправить эту проблему?

Ответы [ 2 ]

1 голос
/ 26 апреля 2013

К сожалению, клавиатурная навигация, вероятно, «правильная» в соответствии со спецификациями. При попытке пробежать слова со смешанным направлением, сочетания клавиш, такие как Ctrl + > , для перехода от слова к слову начинают изменять направление в зависимости от направленности символов под курсором. текущая позиция - вместо того, чтобы рассматривать всю строку как однонаправленную с точки зрения навигации.

Это понятно, однако, если учесть, как компьютер должен интерпретировать все другие нажатия клавиш при вводе предложений в смешанном режиме.

Если вы начнете вводить символы LTR, вы ожидаете, что они будут перемещаться слева направо (каждый последующий символ будет отображаться справа от последнего). Однако если вы начнете вводить RTL символов, вы ожидаете, что они будут перемещаться справа налево (каждый последующий символ будет отображаться слева от последнего).

Думайте об этом так:

Ctrl + > не означает «перейти вправо на одно слово» - это означает «перейти к следующему слову». В среде RTL слово next находится в left , поэтому клавиатура перемещается в этом направлении.

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

Другими словами: Ctrl + > перемещается в порядке байтов , а не display-order .

Итак - вернемся к вашему вопросу о том, как его преодолеть ...

Если вы не написали какой-то довольно сложный JavaScript (который содержит свой собственный набор проблем и проблем), чтобы изменить работу клавиатуры в ваших блоках, нет хорошего способа «исправить» это. Однако вы можете попробовать следующие варианты, если считаете, что это негативно повлияет на ваших клиентов:

  1. Обеспечить обучение . Изучите все изворотливые трюки с клавиатурой и научите своих пользователей. (Я знаю, я знаю, много работы, и у вас, вероятно, нет времени / бюджета).
  2. Доверяйте своим пользователям . Скорее всего, если ваши пользователи вводят смешанный текст LTR и RTL в ваше приложение, это то, что они регулярно делают в других приложениях. Это означает, что они, вероятно, привыкли к этому набору проблем, потому что это стандартный набор проблем. Если они делают это много - у них, вероятно, уже есть обходные пути, к которым они привыкли - и вы измените на исправите это на самом деле повредят их производительность.
  3. Документируйте это и отправляйте запросы функций . Если вы думаете, что это то, что данный браузер или вендор (например, Microsoft) должен реализовать по-другому, стать активным в своем сообществе пользователей и настаивать на обновлениях, исправлениях и добавлениях функций. Таким образом, мир программного обеспечения становится лучше - и он не возлагает бремя быть агентом изменений исключительно на вашу организацию или, хуже того, на вас.
0 голосов
/ 22 августа 2010

На самом деле вы не можете этого сделать. Как человек, говорящий на иврите, я могу вам сказать, что в этой области много проблем, особенно когда вы смешиваете языки RTL и LTR или иногда числа. Вы ничего не можете сделать. Иногда браузер может справиться с этим, а иногда нет. Например, в Chrome, когда вы используете клавишу Ctrl , чтобы двигаться быстрее внутри текста на иврите, направления правой и левой клавиш меняются на противоположные.

...