我正在使用一些嵌入式JavaScript在GWT(Google Web Toolkit)中编写代码。
我有一个RichTextArea,我需要找到RichTextArea(这是一个生活在iframe中的Document)中的绝对字符位置,当我提供了一个Selection对象(我可以从中获取Range对象)
问题是,选择/范围api是非常相对论设计的 - 它可以告诉你你在哪个文本节点,父元素是什么,等等但似乎不能轻易提供绝对文档本身的字符位置。
我在这里讨论过相关的问题和问题,但这个问题特别是我没有找到的。
我想我可以得到Selection开始的文本节点,然后搜索/遍历Document查找它并添加字符偏移量。这似乎相当暴力。有没有人知道是否有办法更直接地将字符偏移到给定选择/范围的文档中?你会认为这种信息很容易被浏览器提供,但我还没有找到解决方案。
答案 0 :(得分:1)
没有什么容易内置的。你可以通过使用另一个范围来缓解痛苦,这个范围跨越了可信任元素的开头和选择的开始之间的DOM部分,并在其上调用toString()
,如此示例中的saveSelection()
函数:
https://stackoverflow.com/a/13950376/96100
此处仅有插入符号的类似示例,以及有关此方法的缺点的注释(例如<br>
元素隐含的换行符和不对字符数有贡献的块元素):