0

我有一个标签,正在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 坐标,它们对我来说看起来像像素——但我有两个滚动条、格式等,因此计算像素的字符偏移量将非常非常困难。

这些信息是在事件数据中的某处,还是有用于以某种方式计算的代码?

非常感谢任何帮助。

4

1 回答 1

1

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

window.getSelection().anchorOffset

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

http://jsfiddle.net/Lx5D2/

于 2013-08-02T02:53:51.880 回答