the <bdi> tag in HTML5的目的是从其上下文中隔离双向文本。而这正是我想要的。

从左到右的用户名显示如下:

Welcome, Generic User. [Logout]

使用从右到左的用户名,这将变成一件可怕的事情:
Welcome, [tougoL] .resU cireneG

甚至取决于上下文,甚至向后显示周围的所有内容(而不仅仅是用户名)。

问题是尚无浏览器支持<bdi>标记,所以我在徘徊,有没有办法模拟它?哪些HTML标签也可以隔离它?我知道<span><div>不知道。

我不想删除所有BIDI字符,但我希望删除它,这是网站正确显示的重要性>双向语言用户参与的权利。

最佳答案



不应该这样(例如)阿拉伯用户名中的文本将以从右到左的方式呈现,但不会影响周围的拉丁文本的流动。

您可能会想到的问题是用户名包含Unicode BDO(双向覆盖)控制字符时。这会影响其后的所有内联文本,对于将文本模板化为HTML的网站而言,这通常是一件坏事。

解决此问题的最简单方法可能是输入过滤以删除控制字符,包括常规ASCII(0x00-0x1F)和Unicode控制字符。有一组由Unicode和W3指定的字符不适合用于this Note中的标记,Web应用程序通常希望从数据中删除这些字符。它包括BDO字符以及其他一些可能导致奇怪效果泄漏到其自身文本范围之外的字符。

09-30 23:04
查看更多