2011-06-17 13 views

Respuesta

33

Código de archivar es algo como esto:

CKEDITOR.on('instanceCreated', function(e) { 
     e.editor.on('contentDom', function() { 
      e.editor.document.on('keyup', function(event) { 
       // keyup event in ckeditor 
      } 
     ); 
    }); 
}); 

Edición - 2014 - Desde esta respuesta todavía está consiguiendo algunos upvotes, me sentí que sería justo señalar, que estaba destinado para CKEditor en versión 3.x. Con la versión 4.x hay un evento de cambio, lo que dará lugar no sólo en eventos clave, sino también después de pegar, deshacer, rehacer, etc.

En el código es algo como esto:

CKEDITOR.on('instanceCreated', function(e) { 
    e.editor.on('change', function (event) { 
     // change event in CKEditor 4.x 
    }); 
}); 
+0

gracias un trillón, trabajado brillantemente . – ghostCoder

+0

¿Se relacionaría esto con cada instancia de CKEDITOR creada? – Chris

+0

@Chris sí, si está configurado antes de crear instancias – Zee

-3

Agregue ese código en su página, o en un archivo .js incluido en su página. No hay misterio sobre ese código.

+1

no, no funciona de esa manera ... :(Es – ghostCoder

+0

hace mucho tiempo, pero creo el downvoting es injusto y ha "deshecho" uno de ellos. La pregunta era dónde poner el código, no sobre el código en sí. ¿En qué otro lugar aparte de un archivo js incluido en la página o como js en la página pondría cualquier ckEditor? js code? Estoy de acuerdo en que la respuesta es un poco escueta y no particularmente útil. También observo que @Gabriel citó una publicación del mismo autor en su respuesta (que no menciona dónde poner el código). –

5

¿Te necesidad de rastrear los cambios?

Originalmente estaba usando la solución anterior, pero terminé reemplazándola por la OnChange CKEditor plugin. Esto es útil en algunos casos especiales; por ejemplo, si agrega un vínculo utilizando la barra de herramientas, la pulsación de tecla no registrará nada.

Aquí está un ejemplo de código, actualizado para utilizar instanceCreated (instalar AlCambiar primero):

CKEDITOR.on('instanceCreated', function(e) { 
    if (e.editor.name === editorId) { //editorId is the id of the textarea 
     e.editor.on('change', function(evt) { 
      //Text change code 
     }); 
    } 
}); 

Actualización: De acuerdo con la respuesta anterior, CKEditor ahora tiene incorporado un evento de cambio, por lo que no tiene para instalar el complemento para usar esta solución más. Aún puede usar la segunda línea de código para aplicar el cambio a la instancia de CKEditor que desea editar.

+0

echa un vistazo al plugin también! Gracias. :) – ghostCoder

-3
CKEDITOR.instances.editor1.on('change', function() { //Do something here.}); 

Este código registra cualquier evento de cambio incluyendo copiar y pegar.

+0

Este código registra cualquier evento de cambio incluyendo copiar y pegar. –

0

Si la lógica keydown tiene sentido para un plugin dado, se puede incluir en la definición del plugin:

CKEDITOR.plugins.add('customPlugin', { 
    // definition keys... 
    init: function(editor) { 
     // Plugin logic 
     ... 

    // Register a keydown event handler -- http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-key 
    editor.on('key', function(event) { 
     console.log('CKEDITOR keydown event from customPlugin'); // successfully captures keydown when registered from plugin 
    } 
}); 
Cuestiones relacionadas