Funkcja podświetlania tekstu i dodawania notatek w czytniku epub ios
Opracowuję czytnik epub dla ios i Androida. Chcę zaimplementować podkreślenia tekstu i dodać funkcję notatek do mojego czytnika epub. I chcę wiedzieć, jak te funkcje mają stały epub układu. Mogę pobrać wybrany obiekt wedługjavascript:window.getSelection()
. Chcę zapisać i pobrać te obiekty do wykorzystania w przyszłości. Oto kod, którego użyłem do podświetlania i zapisywania tekstu:
var selection;
var storedSelections[];
function highlightText() {
if (window.getSelection) {
selection = window.getSelection();
}
if (selection.rangeCount > 0) {
var range = selection.getRangeAt(0);
var selectedText = range.toString();
var span = document.createElement("span");
span.id = "span_" + range.startOffset + "_" + range.endOffset ;
alert(span.id);
span.onclick = function() {
myOnclikFunction(selectedText);};
span.setAttribute("class","uiWebviewHighlight");
span.style.backgroundColor = "skyblue";
range.surroundContents(span);
selection.removeAllRanges();
selection.addRange(range);
for (var i = 0; i < selection.rangeCount; i++) {
storedSelections.push (selection.getRangeAt (i));
}
selection.removeAllRanges();
localStorage.setItem('storedSelections',storedSelections);
}}
Użyłem tego kodu do pobierania zaznaczonego tekstu:
function ShowStoredSelections () {
storedSelections.length=0;
var retrieved= localStorage.getItem('storedSelections');
storedSelections.push (retrieved);
var selection = window.getSelection ();
for (var i = 0; i < storedSelections.length; i++) {
selection.removeAllRanges ();
selection.addRange (storedSelections[i]);
if (selection.rangeCount > 0) {
var range = selection.getRangeAt(0);
var selectedText = range.toString();
var span = document.createElement("span");
span.id = "span_" + range.startOffset + "_" + range.endOffset ;
span.onclick = function() {
myOnclikFunction(selectedText);
};
span.setAttribute("class","uiWebviewHighlight");
span.style.backgroundColor = "red";
range.surroundContents(span);
selection.removeAllRanges();
selection.addRange(range);
}
}}
Nie mogę dodać pobranego tekstu doselection.addRange
. Co w tym złego robię?
Podaj mi kilka pomysłów lub sugestii, aby rozwiązać ten problem.
Z góry dziękuję za każdą odpowiedź lub odpowiedź.