首页 > 开发 > MySQL > 正文

豆瓣读书的批注功能是如何实现的?

2017-09-08 09:04:37  来源:网友分享

像这样可以选中任意文字进行批注,看了下前端的代码是把每个字都用span标签给包裹起来并且有数字排序(感觉应该是从数据库取出文章后再进行处理的),想知道后台数据库是怎么进行处理和存储的,有没有现有的框架或库可以借鉴?
如果是从数据库取出文章再对每个字进行处理和排序,那么删改原文之后原先的批注是不是会失效?

解决方案

作为collamark的作者, 这个不麻烦。 你需要掌握range API就行了。https://developer.mozilla.org...

服务器存储被选中的node和startIndex, endIndex,剩下的就是dom的操作了。

至于原文修改的话,首先豆瓣阅读是正规书籍修改的情况很少。 如果真是出现的话可以在修改后台进行数据矫正, collamark的话如楼上所说会进行自动矫正,当数据库的偏移的出来的文本和数据库中的文本不一致的时候,就直接搜索全文找到正确的偏移(也不是100%正确了,比如页面同时有两个相同的出现位置的时候,就没办法了)