如何在Javascript中计算dblclick事件的文本偏移量

How to compute offset in text on dblclick event in Javascript

本文关键字:事件 文本 偏移量 dblclick 计算 Javascript      更新时间:2023-09-26

我有一个标签,正在上面设置ondblclick

<label ondblclick="foo(event);" 
 style="white-space: pre; font-family: Monospace; font-size: 12px;">
lot's of text here blah blah blah and more...

双击文本中的一个单词时,我会得到对Javascript函数的回调。

我想知道选择的文本中有多少个字符。

我可以使用类似的东西来获得选择本身

(window.getSelection && window.getSelection().toString())

当然,我有文本节点本身,所以我有整个文本。

但是所选内容可能会在文本节点中出现多次——我需要从字符的角度了解偏移量。例如,如果用户双击blah,我想知道它是哪一个。

在这个事件中,我能找到的只是各种X、Y坐标,它们对我来说就像像素——但我有两个滚动条、格式等,所以从像素计算字符偏移量将非常非常困难。

这些信息是在事件数据中的某个地方吗?还是有代码以某种方式计算这些信息?

非常感谢您的帮助。

如果选择在标签节点内开始,则window.getSelection()返回的对象应具有anchorOffset属性,该属性可为您提供所需内容。

window.getSelection().anchorOffset

不过,我不确定跨浏览器兼容性。例如,请参阅以下JSFiddle:

http://jsfiddle.net/Lx5D2/