Есть ли способ сохранить выделенный текст и снова выделить его после обновления страницы?
Я пытаюсь выделить текст и сохранить этот выбор в 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, которые предоставляют более полезные методы и свойства.
Я не знаю, как далеко вы хотите зайти с этим решением, и ваш вопрос довольно общий, так что это скорее направление, которое вы могли бы пройти, а не готовое к использованию решение.