Navigation HTML中的RTL(从右到左)键盘导航<;TextArea>;

Navigation HTML中的RTL(从右到左)键盘导航<;TextArea>;,navigation,keyboard,textarea,right-to-left,keyboard-navigation,Navigation,Keyboard,Textarea,Right To Left,Keyboard Navigation,我正在使用一些HTML,其中包含。目前,我正在测试基于LTR和RTL的混合字符的输入,例如“abcأبجabc” 在RTL模式下,字符串显示正确,但键盘导航不正确。具体来说,在浏览英语和阿拉伯语字符串部分时,它没有遵循正确的顺序 你知道我如何绕过或解决这个问题吗?事实上你做不到。 作为一个说希伯来语的人,我可以告诉你,在这方面有很多问题,特别是当你混合使用RTL和LTR语言或者有时是数字时。 你无能为力。有时浏览器可以处理,有时不能。 例如,在Chrome中,当您使用Ctrl键在希伯来文文

我正在使用一些HTML,其中包含
。目前,我正在测试基于
LTR
RTL
的混合字符的输入,例如
“abcأبجabc”



RTL
模式下,字符串显示正确,但键盘导航不正确。具体来说,在浏览英语和阿拉伯语字符串部分时,它没有遵循正确的顺序

你知道我如何绕过或解决这个问题吗?

事实上你做不到。 作为一个说希伯来语的人,我可以告诉你,在这方面有很多问题,特别是当你混合使用RTL和LTR语言或者有时是数字时。 你无能为力。有时浏览器可以处理,有时不能。
例如,在Chrome中,当您使用Ctrl键在希伯来文文本中移动得更快时,左右键的方向会变为相反方向。

不幸的是,根据规范,键盘导航可能是“正确的”。当尝试运行混合方向的单词时,键盘快捷键(如Ctrl+>)要从一个单词跳到另一个单词,请根据光标当前位置下字符的方向性开始更改方向,而不是从导航角度将整个字符串视为单向

这是可以理解的,但是当你考虑计算机在键入混合模式句子时需要解释所有其他击键。

如果您开始键入
LTR
字符,您希望它们从左向右移动(后续每个字符显示在最后一个字符的右侧)。但是,如果您开始键入
RTL
字符,您希望它们从右向左移动(后面的每个字符都显示在最后一个字符的左边)

这样想:

Ctrl+>并不意味着“往右转一个单词”-它意味着“转到下一个单词”。在
RTL
环境中,下一个单词位于左侧-因此键盘会向该方向跳跃

接下来,本质上与字节在内存中的保存顺序有关,而不是与字符在屏幕上的显示顺序有关。无论单词是从屏幕的右侧还是左侧开始,字符都会按顺序保存在内存中,从单词的开头开始,到单词的结尾结束

换句话说:Ctrl+>按字节顺序移动,而不是按显示顺序移动

所以-回到你的问题,如何克服它

除非您编写一些相当复杂的JavaScript(它包含自己的一系列挑战和麻烦)来改变键盘导航在您的框中的工作方式,否则没有好的方法来“修复”它。但是,如果您觉得这会对您的客户产生负面影响,您可以尝试以下替代方案:

  • 提供培训。学习输入和输出的古怪键盘技巧,并教你的用户。(我知道,我知道,很多工作,你可能没有时间/预算)
  • 信任您的用户。如果你的用户在你的应用程序中输入混合的
    LTR
    RTL
    文本,这也是他们在其他应用程序中经常做的事情。这意味着他们可能已经习惯了这组问题,因为这是一组标准问题。如果他们经常这样做——他们可能已经有了他们习惯的变通方法——而你改变它来修复它实际上可能会损害他们的生产力
  • 记录它,并提交功能请求。如果您认为某个特定的浏览器或供应商(如Microsoft)应该以不同的方式实现这一点,那么就活跃在他们的用户社区中,推动更新、补丁和功能添加。这就是软件世界变得更好的方式——它不会把作为变更代理的负担完全放在您的组织上,或者更糟的是,放在您的身上

  • 您只需使用样式添加div:


    以下是代码:
    这是否应该在浏览器级别得到支持?谢谢
    <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>