Я разрабатываю программу для чтения книг для iOS, используя UIWebView
. В данный момент я работаю с некоторыми основными файлами HTML, но в конечном итоге буду работать с ePubs. Я ищу подходящий способ оформления диапазонов текста. Мои диапазоны немного особенные в том смысле, что они обычно включают три диапазона - диапазон клавиш и диапазон непосредственно перед и диапазон сразу после. Распределение клавиш может охватывать несколько узлов и может начинаться или заканчиваться, например, при выделении жирным шрифтом и т. Д. Стиль не должен записываться в файл.
На данный момент у меня есть рабочее решение:
document.designMode = "on";
// Color the first section
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range1);
if (!selection.isCollapsed){
document.execCommand("foreColor", false, color1);
}
// Color the middle section
selection.removeAllRanges();
selection.addRange(range2);
if (!selection.isCollapsed){
document.execCommand("backColor", false, color2);
document.execCommand("foreColor", false, color3);
}
// Color the last section
selection.removeAllRanges();
selection.addRange(range3);
if (!selection.isCollapsed){
document.execCommand("foreColor", false, color1);
}
document.designMode = "off";
selection.removeAllRanges();
Это работает нормально, но заметно медленно (на iPad2), даже если я изменяю его, чтобы выделить один диапазон в коротком HTML-документе. Всегда есть очень заметная задержка, прежде чем текст стилизован. Глядя на устройства для чтения электронных книг на iPad, такие как Kindle или iBooks, нет заметной задержки. Как они могут реализовать свою функцию выделения? Могут ли они читать географическое положение выбранного текста и накладывать какие-то наложения?
Я искал лучшее решение, чем уже использую, но безуспешно, поэтому, если у кого-то есть идея, я был бы очень признателен.
Спасибо!