Javascript BiDi语境中的文本插入符号行为
我很难理解现代浏览器如何使用BiDi/RTL文本在Javascript BiDi语境中的文本插入符号行为,javascript,html,contenteditable,right-to-left,bidi,Javascript,Html,Contenteditable,Right To Left,Bidi,我很难理解现代浏览器如何使用BiDi/RTL文本在contenteditable上下文中处理插入符号 这个问题的目的不是如何解决一个具体问题,而是更多地决定采用哪种方法(在更广泛的背景下) 我正在开发一个JS文本编辑器,它应该可以处理BiDi文本和自定义“标记” 例如: 我在这里做了一个简单的测试,以测试下面描述的一些情况: 你好,世界 现代浏览器对BiDi的支持还远远不够完美。我发现了一些在Chrome中处理不正确的事情(还没有在Safari和Firefox中测试每个案例): 我没有找到任
contenteditable
上下文中处理插入符号
这个问题的目的不是如何解决一个具体问题,而是更多地决定采用哪种方法(在更广泛的背景下)
我正在开发一个JS文本编辑器,它应该可以处理BiDi文本和自定义“标记”
例如:
我在这里做了一个简单的测试,以测试下面描述的一些情况:
你好,世界
现代浏览器对BiDi的支持还远远不够完美。我发现了一些在Chrome中处理不正确的事情(还没有在Safari和Firefox中测试每个案例):
dir
属性)的跨距(参见上面的示例)dir=“RTL”
属性是不够的:插入符号的方向是向后的(=与LTR上下文的方向相同,这是错误的)。奇怪的是,范围对象内的偏移是正确的contenteditable
元素中,使用箭头键从RTL跳到LTR元素,反之亦然,插入符号似乎跳过一个位置。正如您在上面的JSFIDLE中所看到的,您无法让插入符号在RTL范围的末尾移动,因为它在父div的开头跳转(开始=元素的结尾,因为它的方向是RTL)<div contenteditable id="editor" dir="rtl"><span class="text" dir="ltr">Hello</span><span class="text" dir="rtl">مرحبا</span><span class="text" dir="ltr">world</span></div>