Есть ли способ сохранить выделенный текст и снова выделить его после обновления страницы?

Я пытаюсь выделить текст и сохранить этот выбор в localStorage или DB, и я мог бы выделить ранее выбранный текст, прочитав его обратно из хранилища. Но если выделенный текст находится в нескольких местах на странице, тогда выделяются все экземпляры, которые я не хочу. Я могу взять левую и верхнюю часть выделенного текста, но в случае изменения размера шрифта левая / верхняя часть изменяется. Я не делюсь ни одним кодом здесь, потому что нет ничего, чтобы поделиться, связанных с этим. К вашему сведению, я имею в виду приложение iBooks в ipad, которое имеет ту же функцию, и я хочу знать, как оно работает правильно?

Обновление: я попробовал новый подход, в котором я добавляю маркеры вокруг выделенного текста, с помощью которого я могу определить начало и конец выбранной строки, чтобы выделить ее позже. Вы можете увидеть демо здесь: http://jsfiddle.net/codef0rmer/jE4w5/

но в iPad rangeCount не работает, есть ли обходной путь для iPad?

1 ответ

Решение

Вы можете получить информацию о текущем выборе, используя window.getSelection() - по крайней мере, в современных браузерах. Он вернет объект Selection, вы можете начать с игры со свойствами, предоставленными этим объектом:

  • anchorNode Возвращает узел, в котором начинается выбор.

  • anchorOffset Возвращает количество символов, на которое якорь выделения смещен в узле anchorNode.

  • focusNode Возвращает узел, в котором заканчивается выбор.

  • focusOffset Возвращает количество символов, на которое фокус выделения выделяется в пределах focusNode.

  • isCollapsed Возвращает логическое значение, указывающее, находятся ли начальная и конечная точки выделения в одной и той же позиции.

  • rangeCount Возвращает количество диапазонов в выборе.

Кроме того, используя getRangeAt() метод, вы можете получить объекты Range из Selection, которые предоставляют более полезные методы и свойства.

Я не знаю, как далеко вы хотите зайти с этим решением, и ваш вопрос довольно общий, так что это скорее направление, которое вы могли бы пройти, а не готовое к использованию решение.

Другие вопросы по тегам