Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在epub(html)阅读器应用程序(android sdk、ios、web等)中序列化用户元素的最佳方式是什么_Javascript_Android_Ios_Web_Epub - Fatal编程技术网

Javascript 在epub(html)阅读器应用程序(android sdk、ios、web等)中序列化用户元素的最佳方式是什么

Javascript 在epub(html)阅读器应用程序(android sdk、ios、web等)中序列化用户元素的最佳方式是什么,javascript,android,ios,web,epub,Javascript,Android,Ios,Web,Epub,我们正在开发epub读者图书馆。 我们的用户将能够在任何设备(web浏览器、android sdk应用程序、ios应用程序等)上同步阅读(通过服务器api)。 我们应该支持用户注释、引用、阅读位置和书签的同步。我们也支持改变文本大小。我们使用css列进行书籍分页 现在,对于序列化,我们尝试使用timdown/rangy库(textrangemodule):确定相对于书籍章节(html正文)的文本位置 但我们注意到: 像selectCharacters(Node containerNode、Nu

我们正在开发epub读者图书馆。 我们的用户将能够在任何设备(web浏览器、android sdk应用程序、ios应用程序等)上同步阅读(通过服务器api)。 我们应该支持用户注释、引用、阅读位置和书签的同步。我们也支持改变文本大小。我们使用css列进行书籍分页

现在,对于序列化,我们尝试使用timdown/rangy库(textrangemodule):确定相对于书籍章节(html正文)的文本位置

但我们注意到:

  • 像selectCharacters(Node containerNode、Number startIndex、Number endIndex)这样的js函数工作得非常慢
  • 文本大小更改后的文本位置不匹配
我们正在考虑使用相同的rangy函数,但与最近的dom元素(p)相关。但在这种情况下,我们每次都必须以某种通用的方式为所有客户机标识dom元素

在我们的例子中,序列化-反序列化用户元素的最佳方式是什么

当然,这是我们的工作,也是我们的问题,但我们非常感谢您的任何建议

跟踪当前读取位置的唯一“IDPF”方法是在当前视口中存储第一个可见元素的EPUB CFI(请参见)

对于高光、注释和书签也是如此

请注意,如果在将原始EPUB资产(例如,XHTML文件)传递给渲染器(例如,WebView)之前操作其DOM,则应跟踪原始和修改的DOM之间的映射,以便一致地应用CFI

Readium JS项目有一个处理CFI的Javascript模块,您可能会发现该模块很有用: