Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » js getSelection() порядковый номер(индекс)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

MbIJIO



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер.  
 
Функцией
Код:
window.getSelection()
получаю выделенный текст
 
Функцией
Код:
window.getSelection().anchorNode
получаю текст в элементе, с которого начал выделение
 
Функцией
Код:
window.getSelection().focusNode
получаю текст в элементе, которым закончил выделение
 

Код:
 
jQuery(document).ready(function(){
    var isCtrl = false;
    jQuery(document).keyup(function(e){
        if(e.which == 17) isCtrl = false;
    }).keydown(function(e){
        if(e.which == 17) isCtrl = true;
        if(e.which == 13 && isCtrl == true){
            // получаем выделенный текст
            var select = getSelectedText();
            // получаю текст первого выделенного элемента от 0 до знака, который в выделенном тексте
            var start_ = window.getSelection().anchorNode.textContent.substring(0,select.anchorOffset);
            // получаю текст последнего выделенного элемента от последнего знака, который в выделенном тексте
            var _end   = window.getSelection().focusNode.textContent.substring(select.focusOffset);
            var string = start_+select+_end;
        }
    });
});
 

Если выделять текст буду слева направо, то все хорошо, а если справа налево, то получится неправильный результат
 
Хочу |выделить текст справа| налево
 
то в результате вот что получится
select = выделить текст справа
start_ = Хочу выделить текст справа
_end = выделить текст справа налево
 
и итоговая строка будет "Хочу выделить текст справа выделить текст справа выделить текст справа налево"
 
Подскажите как определить какой элемент идет первым, а какой последующим.
Спасибо.

Всего записей: 175 | Зарегистр. 12-12-2006 | Отправлено: 19:46 26-06-2014
MbIJIO



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделал при помощи текста, костыль, но другого выхода не нашел по определению первого и последнего выделенного элемента на странице

Код:
 
            var select = getSelectedText();
            var first_select = select.anchorNode.textContent;
            var end_select = select.focusNode.textContent;
 
            if(first_select == end_select){
                var string = first_select;
            } else {
                //             веду поиск части первого выделенного элемента, во всем выделенном тексте
                //                       _весь_выделенный_текст_      _____первая_часть_строки_первого_выделенного_элемента_____
                //                                       \                   /                             \                                                        /
                var indexOf = jQuery.trim(select.getRangeAt(0).toString()).indexOf(jQuery.trim(first_select.substring(0,select.anchorOffset)));
 
                if(indexOf == -1){
                    // если первая часть строки первого выделенного элемента не находится в выделенном тексте
                    // то обрезаем первый элемент с начала + выделенный текст + конец текста последнего элемента
                    string = first_select.substring(0,select.anchorOffset)+select+end_select.substring(select.focusOffset);
                } else if(indexOf == 0){
                    // если первая часть строки первого выделенного элемента находится в самом начале выделенного текста
                    // то добавляем к выделенныму тексту конец последнего элемента
                    string = select+end_select.substring(select.focusOffset);
                } else if(indexOf > 0){
                    // если первая часть строки первого выделенного элемента находится не в начале
                    // тогда первый выделенный элемент будет последним, а последний выделенный элемент будет первым (на странице)
                    string = end_select.substring(0,select.focusOffset)+select+first_select.substring(select.anchorOffset);
                }
            }
 
 

Всего записей: 175 | Зарегистр. 12-12-2006 | Отправлено: 13:21 27-06-2014 | Исправлено: MbIJIO, 17:04 30-06-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » js getSelection() порядковый номер(индекс)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru