Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > позиция выделения в div


Автор: ZC1989 24.9.2012, 22:01
Всем привет)

нужно получать позиции выделения в диве или просто позицию курсора, куда пользователь ее поставил

Код

<div id="_form" class="form_div" contenteditable="true"></div>

<input type='button' onclick=''>


а вот кусок кода который должен возвращать позицию курсора
Код

/*  */
    this.get_cursor = function () {
        
        var _sel = [ 0, 0 ];
        
        if( !div_form )
            return _sel;

        if( window.getSelection ) {
            
            //removeEmptyTextElements( div_form );

            var sel = window.getSelection();
            var rng = sel.getRangeAt( 0 ); 
            
            _sel[1] = (rng.toString()).length;
            rng = rng.cloneRange();

            var startCont = rng.startContainer;
            var startOffs = rng.startOffset;
            
            rng.setStart( div_form, 0 );
            rng.setEnd( startCont, startOffs );
            
            _sel[0] = rng.toString().length;
            _sel[1] = _sel[1] + _sel[0];
            
        } else {
            
            //var rng = div_form.selection/*.createRange()*/;
            //SelectStart = (-rng.move("character", -1000000000000)).toString();
            //SelectEnd = SelectStart + (rng.text).length;
        }

        return _sel;
    }


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

этот же код работает если я делаю не через div а через iframe и там он работает прекрасно, либо он просто возвращает одинаковые координаты либо позиции выделения, а вот с димов чтото не то...

я так думаю, не связано ли это как раз с тем что iframe всегда держит все в своем document ?

Автор: Aliance 25.9.2012, 09:56
http://forum.vingrad.ru/forum/topic-35775.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)