2014-02-20 4 views
0

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

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

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

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

Спасибо, и извините, если мне не хватает чего-то очевидного.

ответ

0

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

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

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

+0

Извините, я должен был быть яснее. У меня уже есть логика, чтобы перейти от позиции курсора/курсора к номеру строки (это связано только с подсчетом новых строк от начала до позиции каретки.) Мне просто нужна более точная позиция каретки, на которую я надеялся, предоставлять. Это то, что я пытаюсь получить из рядового, позиция каретки, а не номер строки. Возможно ли получить позицию каретки в контентном div, который не начинается с каждой строки? – LiamD

+0

Я отредактировал свой ответ. – Louis

+0

Хм, хорошо. Значит, вы говорите, что Rangy не может объяснить разрывы строк? Таким образом, код, который я опубликовал, является правильным способом получить позицию каретки (игнорируя вопрос о линиях на мгновение) в контентном div? – LiamD

Смежные вопросы