Ответ 1
Это должно сделать трюк
var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
// Update the text
evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);
Кто-нибудь знает, как я могу прикрепить событие onpaste
в CKEditor 3.x?
Я в основном хочу захватить данные CTRL + V и добавить к нему немного текста, а затем добавить его в редактор.
Я огляделся, но не нашел окончательного ответа. Форум CKEditor не очень помогает.
Это должно сделать трюк
var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
// Update the text
evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);
В этом примере редактируется содержимое, которое нужно вставить, удалив все элементы img.
CKEDITOR.on('instanceReady', function (ev) {
ev.editor.on('paste', function (ev) {
ev.data.html = ev.data.html.replace(/<img( [^>]*)?>/gi, '');
});
});
Оба этих примера немного синтетичны.
Сначала editor.getData() получает все содержимое редактора, поэтому, если вы хотите обрабатывать только вставленные данные, вам нужно получить ev.data.html и вставить в нужное место.
editor = CKEDITOR.instances.editor1;
editor.on('paste', function (evt) {
var editor = evt.editor;
evt.stop(); // we don't let editor to paste data, only for current event
// show loader that blocks editor changes
$.post('clean.php', {html: evt.data.html}, function (data) {
editor.insertHtml( data.html ); // text will be inserted at correct place
// hide loader
}, 'json');
});
Не используйте функции editor.setReadonly(true/false), вы не сможете вставлять текст в правильное место (в случае обработки данных асинхронным способом).
Я знаю, что это старый вопрос, но я подумал, что добавлю свою версию aliaksej-ответа, поскольку он позволяет использовать пользовательский "очиститель" - это не совсем сработало для меня, пока я не изменил его, как показано ниже.
editor = CKEDITOR.instances[id];
editor.on('paste', function (evt) {
evt.stop();
$.post('/actions/clean.php', {html: evt.data.dataValue}).done(function (data) {
evt.editor.insertHtml(data);
}, 'json');
});
editor = CKEDITOR.instances[id];
editor.on('paste', function (evt) {
evt.stop();
var data = evt.data.dataValue;
if (window.chrome || window.safari) {
// removing span wrapper on webkit browsers.
data = $(data).html();
}
evt.editor.insertHtml(data);
});