有没有办法保存所选文本,并在刷新页面后再次突出显示它?

时间:2012-07-11 13:37:04

标签: javascript jquery local-storage

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

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

但是在iPad rangeCount中无效,是否有针对iPad的解决方法?

1 个答案:

答案 0 :(得分:4)

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

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

  • <强> anchorOffset 返回选择的锚点在anchorNode中偏移的字符数。

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

  • <强> focusOffset 返回选择焦点在focusNode中偏移的字符数。

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

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

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

我不知道您希望在多大程度上使用此解决方案,而且您的问题非常普遍,因此这更像是您可以采用的方向,而非现成的解决方案。