2

我正在尝试选择文本并将该选择保存在 localStorage 或 DB 中,我可以通过从存储中读取它来突出显示先前选择的文本。但是,如果所选文本位于页面中的多个位置,则所有实例都会突出显示,这是我不想要的。我可以抓住所选文本的左侧和顶部,但在调整字体大小的情况下,左侧/顶部会发生变化。我没有在这里分享任何代码,因为没有什么可以分享的。仅供参考,我指的是 ipad 中的 iBooks 应用程序,它具有相同的功能,我很想知道它是如何正确完成的?

更新:我尝试了一种新方法,其中我在所选文本周围添加标记,使用它我可以找出稍后要突出显示的所选字符串的开始和结束。你可以在这里看到演示:http: //jsfiddle.net/codef0rmer/jE4w5/

但在 iPadrangeCount中不起作用,iPad 有什么解决方法吗?

4

1 回答 1

4

window.getSelection()您可以使用- 至少在现代浏览器中获取有关当前选择的信息。它将返回一个Selection对象,您可以从使用该对象提供的属性开始:

  • anchorNode 返回选择开始的节点。

  • anchorOffset 返回选择的锚点在 anchorNode 内偏移的字符数。

  • focusNode 返回选择结束的节点。

  • focusOffset 返回选择的焦点在 focusNode 内偏移的字符数。

  • isCollapsed 返回一个布尔值,指示选择的起点和终点是否在同一位置。

  • rangeCount 返回选择中的范围数。

此外,使用该getRangeAt()方法,您可以从 Selection 中获取Range对象,这些对象提供了更多有用的方法和属性。

我不知道你想用这个解决方案走多远,而且你的问题很笼统,所以这更像是一个你可以去的方向,而不是一个现成的解决方案。

于 2012-07-11T13:48:03.683 回答