2013-04-23 5 views
0

Я пытаюсь использовать следующую команду, чтобы вставить текст в CKEditor:CKEditor проблема с InsertText

CKEDITOR.instances.Body.insertText('$${FIRSTNAME}'); 

Эта команда отлично работает, когда курсор находится в текстовом формате. Когда я пытаюсь вставить текст между текстом, который имеет атрибут, он вставляет один сингл вместо $$ $$ {FIRSTNAME}. Я загрузил образец в jsbin воспроизвести проблему

http://jsbin.com/ahikeh/1

Пожалуйста, предложите альтернативу, чтобы устранить эту проблему.

ответ

0

Попробуйте использовать insertHtml() вместо:

CKEDITOR.instances.Body.insertHtml('<b>$${FIRSTNAME}</b>'); 

Updated Demo

+0

Его прекрасно работать с insertHtml, но у меня есть еще одна проблема. Мне нужно вставить это значение на основе текста в CKEditor. Если я вставляю его между сильным тегом, он должен выглядеть полужирным, и если я вставляю его в обычный текст, он должен выглядеть так. Вставляемый текст должен иметь аналогичный стиль текста, в котором в данный момент находится курсор. – Prasad

+0

, если курсор находится в пределах диапазона со стилем или жирным тегом. Вставляемый html будет иметь тот же стиль. Единственная причина, по которой он может сломаться, - это из-за элементов уровня блока внутри встроенных элементов. Что неверно в html. – spons

2

Это некрасиво ошибка: DI отлажена код и найти причину:

https://github.com/ckeditor/ckeditor-dev/blob/master/core/editable.js#L1616

String#replace метод лечит $$ как один $ (https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/String/replace), поэтому данные должны быть защищены.

Я боюсь, что сейчас нет простого обходного пути, так как вы не можете избежать данных заранее. В зависимости от контекста метод replace будет использоваться или не будет использоваться.

Таким образом, лучшим вариантом будет использование другого шаблона шаблона - например. %%{foo} - он будет работать правильно. А при получении данных из редактора вы можете заменить %% на $$.

билетов: http://dev.ckeditor.com/ticket/10367

+0

Спасибо за обновление. Мы попытаемся использовать другой символ, а не $, пока эта проблема не будет исправлена. – Prasad

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