Pregunta
¿Alguien sabe cómo puedo adjuntar un onpaste
Evento en Ckeditor 3.x?
Básicamente quiero agarrar CONTROL + V datos y agréguelo y luego agréguelo al editor.
He mirado a su alrededor pero no he encontrado una respuesta definitiva. El foro de Ckeditor no es de gran ayuda.
Solución
Esto debería funcionar
var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
// Update the text
evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);
Otros consejos
Sus dos ejemplos son un poco sintéticos.
Al principio, Editor.getData () obtiene todo el contenido del editor, por lo que si desea procesar solo datos pegados, debe obtener ev.data.html y pegar el lugar correcto.
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');
});
No use funciones editor.setReadonly (True/False), no podrá pegar texto en el lugar correcto (en casos con el procesamiento de datos async).
Este ejemplo edita el contenido que se pegará eliminando todos los elementos IMG.
CKEDITOR.on('instanceReady', function (ev) {
ev.editor.on('paste', function (ev) {
ev.data.html = ev.data.html.replace(/<img( [^>]*)?>/gi, '');
});
});
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);
});
Sé que es una pregunta antigua, pero pensé en agregar mi versión de la respuesta de Aliaksej, ya que permite el uso de un 'limpiador' personalizado; no funcionó para mí hasta que la modifiqué como a continuación.
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');
});