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.

¿Fue útil?

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');
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top