我正在用GWT (Google Web Toolkit)编写带有一些嵌入式JavaScript的代码。
我有一个RichTextArea,当我被提供一个Selection对象(我可以从中获取Range对象)时,我需要找出该RichTextArea (它是一个驻留在iframe中的文档)中的绝对字符位置。
问题是,选择/范围api是非常相对论设计的-它可以告诉您所在的文本节点,父元素是什么,等等,但似乎不能轻松地提供文档本身内的绝对字符位置。
我在这里找到了相关的问题和讨论的问题,但这个问题尤其是我没有找到的。
我想我可以获得开始选择的文本节点,然后搜索/遍历文档,查找它并添加字符偏移量;这似乎是一种蛮力。有没有人知道是否有一种方法可以更直接地将字符偏移量放入给定选择/范围的文档中?您可能认为这类信息很容易由浏览器提供,但我还没有找到解决这个问题的方法。
发布于 2014-02-05 08:21:13
没有什么容易内置的。您可以通过使用跨越可内容编辑元素的开始部分和选择开始部分之间的DOM部分的另一个范围并对其调用toString()来略微减轻痛苦,如本例中的saveSelection()函数所示:
https://stackoverflow.com/a/13950376/96100
下面是一个类似的插入符号示例,以及关于此方法缺点的说明(例如,<br>元素和块元素隐含的换行符对字符数没有影响):
https://stackoverflow.com/questions/21565929
复制相似问题