Как запретить CKEditor insertHtml обернуть элемент в пределах <p>в браузерах webkit? - PullRequest
3 голосов
/ 03 февраля 2011

Я пытаюсь создать интерфейсную страницу, чтобы мои пользователи могли создавать smarty шаблоны с ckeditor редактором wysiwyg.

Я использую insertHtml функция для добавления кнопки со специальными атрибутами (необходимо проанализировать ее в переменную smarty в серверной части):

// initialize ckeditor
$('textarea.editor').ckeditor({
    contentsCss: '/css/test.css'
});
// get ckeditor instance
ckeditorInstance = $('textarea.editor').ckeditorGet();
// Use some elements (outside the textarea) to add buttons/tokens
// to wysiwyg textarea
$("a.tinymce.tinymce-insert-var").click(function(){
    ckeditorInstance.insertHtml(
        '<input type="button" readonly="readonly" var="{$user-&gt;name}" '
        + 'class="placeholder" value="User Name" />'
    );
});

Это прекрасно работает в Firefox, IE8 и Opera, но с Chrome /Chromium / Safari кнопка вставляется между элементом <p>.

Есть ли способ избежать этого или обратный вызов, который я могу использовать для удаления абзаца?

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

У меня тоже была эта проблема. Вот как я это сделал ...

var editor = $('textarea[name=content]').ckeditorGet();
var element = CKEDITOR.dom.element.createFromHtml( '<p>I am a new paragraph</p>' );
editor.insertElement( element );
0 голосов
/ 16 марта 2011

в главном конфигурационном файле ckeditor есть возможность отключить автоматические вставки

.попробуйте изменить значение CKConfig.EnterMode и CKConfig.ShiftEnterMode, например, на 'br'.

Феликс

0 голосов
/ 15 марта 2011

Похоже, что вы также используете jQuery ... почему бы вам не принудительно включить тег p в функцию .insertHtml в CKEditor, а затем дополнить его jQuery .unwrap , чтобы всегда удалятьр теги?

...