Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка текста в CKEditor без разрыва элемента 
:(
    Опции темы
SkyHawk
Дата 20.11.2012, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 17.8.2006
Где: г. Новосибирск

Репутация: нет
Всего: 2



Доброе время суток!
Господа! Помогите.
Пишу плагин для CKEditor. Нужно вставить текст в редакторе CKEditor в месте, где располагается курсор. При обычной вставке внутри элемента SPAN редактор разрывает элемент на два с аналогичными атрибутами (в том числе и id, что, я считаю, совсем не правильно), вставляя текст из буфера между ними во вновь созданный элемент. Пытаюсь решить проблему отловом события on('paste', вставляя текст внутрь элемента. 
Код

            editor.on( 'paste', function( evt )
            {
                var range1=editor.getSelection().getRanges()[0];

                var elem_txt=elem1.getText();
                var len=elem_txt.length;
                var start_range=range.startOffset; // выделение range сохранено ранее в событии on('key'
                var elem_substr1=elem_txt.substr(0, start_range);
                var elem_substr2=elem_txt.substr(start_range, len-(start_range+1));
                var final_text=elem_substr1+evt.data.html+elem_substr2;
                elem1.setText(final_text);

                range1.startOffset=0;
                range1.endOffset=1;
                editor.getSelection().selectRanges([range1]);
                evt.cancel();
            });



Для этого определяю позицию курсора, разрываю текст на две части, вставляю между ними текст из буфера обмена (атрибут event), и перезаписываю текст методом setText. Вопрос: КАК РАЗМЕСТИТЬ ТЕКСТОВЫЙ КУРСОР ПОСЛЕ ИМЕННО ВСТАВЛЕННОГО ТЕКСТА (не всего текста внутри элемента, а именно того, что был вставлен из буфера)? Элемент при выполнении события paste почему-то считается цельным, неделимым, и указание, к примеру, диапазона range(0,1) выделяет весь элемент, а range(1,1) - распологает курсор в конце элемента.

Были мысли полностью заменить событие 'paste', переписав его в событии 'key', но не знаю, как обратиться к буферу обмена для получения вставляемого текста. Поэтому второй вопрос, ответ на который также помог бы: КАК обратиться к буферу обмена в CKEditor'е?

Это сообщение отредактировал(а) SkyHawk - 20.11.2012, 10:20
--------------------
Быть может все, что может быть, И даже то, что быть не может.
PM MAIL WWW   Вверх
SkyHawk
Дата 20.11.2012, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 17.8.2006
Где: г. Новосибирск

Репутация: нет
Всего: 2



в событии on('key' выделение range(2,10) отрабатывает нормально - выделяет со 2 по 10 элементы... А в событии on('paste' - не хочет, вылетает эксепшн. А выделение range(0,1) эксепшн не вызывает, но выделяет весь элемент. То есть элемент как-бы "схлопнут", или "свернут" - позиция 0 - это перед открывающим тегом элемента, позиция 1 - за закрывающим тегом элемента. Потом если опять обрабатывать on('key' - то опять выделяется нормально, как и должно.
Как отменить "схлопывание" элемента?
--------------------
Быть может все, что может быть, И даже то, что быть не может.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0392 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.