Я пытаюсь получить положение выделенного текста, заменить его некоторым HTML, а затем я хочу сохранить положение выделенного текста, чтобы при следующем отображении html я хотел показать выделение выделенного текста
У меня есть некоторый контент, отображаемый внутри Div
Теперь я выбираю текст «зашифрованный раздел De finibus», который находится в строке 2 и с некоторым смещением от начала. Я заменяю этот текст диапазоном вокруг текста, например:
function textSelection() {
var sel = window.getSelection();
var range = sel.getRangeAt(0).cloneRange();
var markerTextChar = range.extractContents();
var markerEl, markerId = "sel_" + new Date().getTime() + "_" + Math.random().toString().substr(2);
markerEl = document.createElement("span");
markerEl.id = markerId;
markerEl.appendChild(markerTextChar);
range.insertNode(markerEl);
markerEl.style.backgroundColor = ' rgba(246,195,66,0.3)';
markerEl.style.cursor = 'pointer';
}
<div id='page-view' onmouseup='textSelection()'> In publishing and graphic design, lorem ipsum is a filler text or greeking commonly used to demonstrate the textual elements of a graphic document or visual presentation. Replacing meaningful content with placeholder text allows designers to design the
form of the content before the content itself has been produced. The lorem ipsum text is typically a scrambled section of De finibus bonorum et malorum, a 1st-century BC Latin text by Cicero, with words altered, added, and removed to make it nonsensical,
improper Latin.
</div>
Теперь я добавляю стили к этому диапазону, чтобы выделить выделение. Теперь я хочу сохранить эту позицию, чтобы при следующем отображении html-страницы я хотел выделить тот же выбор. Обратите внимание, что один и тот же выделенный текст может повторяться в другом месте, поэтому я не хочу непреднамеренно выделять неправильную позицию.
- Есть ли способ добиться этого?
- Текст, содержащий Div, не имеет свойства contenteditable.
- Пока что у меня есть получение «clientRects» выделенного текста, создание div и добавление стиля к этому div и добавление к телу, но я не хочу этого делать
- HTML для фактического текста генерируется в бэкэнде с использованием синтаксического анализатора языка разметки, такого как MarkDown.
Редактировать :
Позвольте мне добавить больше деталей. Как и вики github, я отображаю содержимое вики, анализируя содержимое и генерируя html на основе выбранного языкового режима, такого как Markdown/Textile. Мне нужен способ каким-то образом сопоставить выделенный текст с фактическим номером текстовой строки при редактировании страницы. При нажатии на редактирование страницы содержимое отображается с помощью редактора кода codemirror.
Спасибо