Вычислении позиции курсора в редактируемом элементе

Valentin

Новичок
Вычислении позиции курсора в редактируемом элементе

Как в редактируемых элементах CONTENTEDITABLE (div, td) узнать позицию курсора в тексте. Или может это можно сделать с помощью объктов TextNode или TextRange?
 

kruglov

Новичок
Что вы имеете в виду под позицией курсора?
Координаты x-y?
Множество выделенных тегов?
 

Valentin

Новичок
Я имею в виду позицию курсора в редактируемом тексте, точнее порядковый номер символа, после которого стоит курсор. Мне нужно по позиции курсора разделить текст на 2 TextNode, чтобы вставить между ними элемент.
 

kruglov

Новичок
Отвечу не про устаревший contenteditable, а про кошерный iframe с designMode="On":

В Mozilla:

var wysiwyg=wysiwyg_iframe.contentWindow.document
wysiwyg.document.selection.createRange().pasteHTML("текст")

В MSIE:

var wysiwyg=wysiwyg_iframe.contentWindow.document
var fragment = wysiwyg.createDocumentFragment()
var div = wysiwyg.createElement("div")
div.innerHTML = "текст"
while (div.firstChild) {
fragment.appendChild(div.firstChild)
}
range.insertNode(fragment)
 

kruglov

Новичок
И что, работает? ;)

Вопщем, вот функция взятия range:

if(navigator.appName!='Netscape'){
var range=wysiwyg.document.selection.createRange()
return range
}else{
var range = wysiwyg.getSelection()
return range.getRangeAt(range.rangeCount - 1)
}

а дальше по данному ранее тексту

p.s. это все сделано путем копи-паста из кода своего редактора, с упрощением, естественно. И получаются накладки.
 
Сверху