Используйте библиотеку Rangy, чтобы получить точное местоположение каретки в contentEditable div

0

Я думаю, что этот вопрос прост, но я не смог понять это. Я ударил точку остановки, используя более простое решение для получения позиции каретки в contenteditable div от Get Caret position в contentEditable div. Я пытаюсь получить номер строки позиции каретки, и у меня есть много логики, но потому, что этот подход относится к концу одной строки так же, как относится к началу следующего, это доказало почти невозможно.

Поэтому вместо этого я пытаюсь использовать библиотеку rangy для получения позиции каретки в надежде, что она правильно относится к концу строк (считая конец строки меньше, чем начало следующего), но я не совсем поняли, как заставить его работать так, как хотелось бы. Мой код выглядит так:

var sel = rangy.getSelection();
var range = sel.getRangeAt(0);
var cursorPos = sel.focusOffset;

Кажется, что работает, когда я нажимаю Enter, чтобы перейти к новой строке (позиция увеличивается на 1), но после этого caretPos снова начинается с 0 в начале каждой строки. Есть ли способ получить общую позицию курсора, которая учитывает новые строки? Чтобы быть ясным, я не спрашиваю, как получить номер строки от rangy, только позиция каретки.

Спасибо, и извините, если я пропущу что-то очевидное.

Теги:
rangy

1 ответ

0

Rangy сам по себе не может дать вам номера строк. sel.focusOffset в коде, отображаемом в вопросе, является либо смещением между sel.focusOffset элементами узла элемента, либо смещением в тексте текстового узла. Если вам кажется, что вам соответствует номер строки, это просто шанс.

В принципе, rangy не будет играть существенную роль в задаче, которую вы представляете. Какая бы система, которая могла бы предоставлять номера строк, могла бы работать независимо от ранжирования.

Редактировать в ответ на комментарий: в вашем вопросе говорится: "В надежде, что он правильно относится к концу строк (считая конец строки меньше, чем начало следующего)". Поскольку тема разговора Rangy, я понимаю "это" как "Rangy". У Rangy нет понятия "конец строки", поэтому он не может относиться к ним каким-либо образом.

  • 0
    Извините, мне следовало быть понятнее. У меня уже есть логика, чтобы перейти от позиции курсора / курсора к номеру строки (это включает в себя просто подсчет новых строк от начала до позиции каретки.) Мне просто нужна более точная позиция каретки, которая, как я надеялся, могла бы быть произвольной. предоставлять. Вот что я пытаюсь получить от ранги, позиции каретки, а не номера строки. Возможно ли получить позицию каретки в contenteditable div, который не начинается заново на каждой строке?
  • 0
    Я отредактировал свой ответ.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню