如何动态地在文本区域中应用嵌套的基本语言

How to dynamically apply nested base languages in textarea?

本文关键字:嵌套 应用 语言 区域 文本 何动态 动态      更新时间:2023-09-26

我正在寻找将rtl和ltr语言放在一起的最优雅的解决方案:例如阿拉伯语和html在一起。

标准不允许使用css:

direction: rtl;
unicode-bidi: embed;

这对我不管怎样都不起作用,因为html有嵌套文本问题。阿拉伯语是向右对齐的,但html是坏的。

是否有一种方法可以动态地做到这一点?标准想要添加一个嵌套的span标签,但由于用户是动态输入的,如果不检测每个字符的结束,我不知道这是怎么可能的。

由于textarea的内容是纯文本,因此您不能在其中使用任何span标记或任何其他标记,并且您不能将其任何部分的样式设置为与其他部分不同(使用伪元素的第一行或第一个字符除外)。

然而,在纯文本级别,可以使用控制字符强制双向嵌入。假设您在元素上整体设置了direction: rtl(期望用户以从右到左的语言输入数据),用户可以输入U+202A从左到右嵌入以输入从左到右的文本,如英语或HTML标记,然后通过输入U+202C POP定向格式结束此操作,返回到从右到左模式。

由于大多数人不知道如何方便地键入这些字符,如果有的话,你可以在页面上为它们设置按钮:

<textarea id=msg name=msg rows=10 cols=40>
</textarea>
<br>
<button type=button onclick="append(''u202A')">→</button>
<button type=button onclick="append(''u202C')">←</button>
<script>
var msg = document.getElementById('msg');
function append(ch) {
  msg.innerHTML += ch;
  msg.focus();
}
</script>