Мы разрабатываем библиотеку чтения epub. Наши пользователи смогут синхронизировать их чтение (через сервер api) на любых устройствах (веб-браузер, приложение sdk для Android, приложение iOS и т. Д.). И мы должны поддерживать синхронизацию пользовательских заметок, цитат, позиций чтения, закладок. Мы также поддерживаем изменение размера текста. И мы используем столбцы css для разбивки книг.Каков наилучший способ сериализации пользовательских элементов в приложениях для чтения epub (html) (android sdk, ios, web и т. Д.)
Теперь для сериализации мы пытаемся использовать библиотеку timdown/rangy (модуль TextRange): https://github.com/timdown/rangy/wiki/Text-Range-Module для определения текстовых позиций относительно главы книги (html body).
Но отметим:
- JS функции, такие как selectCharacters (Node containerNode, номер STARTINDEX, номер ENDINDEX) работает очень медленно
- текста позиции несоответствие после размера текста меняющегося
Мы думая об использовании одних и тех же функций rangy, но относительно ближайшего элемента dom (p). Но в этом случае нам придется каждый раз идентифицировать элементы dom в каком-то универсальном для всех клиента пути.
Каков наилучший способ сериализации - десериализация пользовательских элементов в нашем случае?
Конечно, это наша работа и наши проблемы, но мы будем очень благодарны за ваш совет!