2

我正在构建一个简单的在线文档编辑器。在这个编辑器中,我希望将文本分成页面,每个页面都是一个 contenteditable div。

我想出了一个基本的算法来做到这一点。本质上,我检查当前焦点的 div 以查看它是否有比WORDS_PER_PAGE常量更多的单词。如果确实如此,则将本页的最后一个单词放在下一页的开头。然后您在下一页、下一页等上执行相同的检查,直到您到达页面的末尾。当按下的键是删除/退格键时,执行类似的检查。

现在这个算法并不完美(每个页面的高度取决于单词的长度)但它很适合我的需要。真正困扰我的是设置光标位置并获取这些可编辑 div 的光标位置。我想要的只是一个函数getCursor (element),它将返回光标偏移的字符数,并将光标setCursor (element, n)设置为 n 个字符偏移量。

我对 IE < 9 不屑一顾,所以我不需要一个不稳定的解决方法。我也不能使用 Rangy 库或任何其他库。我试过弄乱 Range 和 Selection 对象,但我什么也做不了。有没有人对我应该如何解决这个问题有任何想法或建议?

4

1 回答 1

0
<div id="example-one" contenteditable="true" onclick="alert(window.getSelection().getRangeAt(0).startOffset)">

信用:http ://www.sitepoint.com/forums/showthread.php?702589-set-caret-position-in-contenteditable-div

于 2014-06-20T18:56:17.660 回答