Todos los eventos
Escucha con editor.attachEvent(name, handler) y deja de escuchar con editor.detachEvent(name, handler). Dentro de un controlador, this es la instancia del editor. Algunos eventos se pueden cancelar: reciben primero un objeto state, y establecer state.returnValue = true le indica al editor que ya te has encargado tú.
Ejemplo
editor.attachEvent("change", function () {
document.getElementById("dirty").hidden = false;
});
// Some events let you take over. Set state.returnValue = true to say "handled",
// and the editor skips its own action.
editor.attachEvent("exec_command_newdoc", function (state, cmd, value) {
state.returnValue = true;
this.setHTMLCode("<p>New document</p>");
});
editor.detachEvent("change", myHandler);Edición y ciclo de vida
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
ready | () | Desde core 2.6.10. Una vez, después de que el editor se construye y se carga su contenido inicial. Se lanza de forma asíncrona, así que un controlador adjuntado justo después de new RichTextEditor(...) lo sigue recibiendo; uno adjuntado más tarde se llama en el siguiente tick. config.onready también lo recibe. |
aftersethtml | () | Desde core 2.6.10. Después de que setHTMLCode sustituya el contenido (también con { undoable: true }), una vez por llamada, y cuando el editor vuelve de la vista de código HTML. No mientras se muestra la vista de código. Una carga no es una edición: no le sigue ningún evento change, y las actualizaciones que haga tu controlador pasan a formar parte del documento cargado. |
panelresized | (info) | Desde core 2.6.11. Un panel lateral redimensionable con editor.makePanelResizable (comentarios, esquema y similares) se redimensionó arrastrando su borde o con ArrowLeft / ArrowRight / Home / End. info es { panel, width }: el elemento del panel y su nuevo ancho en píxeles. |
change | () | El contenido cambió: escritura, un comando, pegado, deshacer. Con debounce, así que una ráfaga de escritura es un solo evento. |
contentchange | () | El contenido cambió; lo informa el plugin de seguridad del contenido después de su propia pasada. |
selectionchange | () | El cursor se movió o la selección cambió, incluso cuando se selecciona un control. |
focus | (event) | El área de edición recibió el foco (focusin del documento editable). |
blur | (event) | El área de edición perdió el foco (focusout). |
documentreplaced | (document) | Desde core 2.6.10. El marco de edición se movió y ahora tiene un documento NUEVO (algunos plugins envuelven el área de edición en un panel al iniciarse). Los listeners enlazados con editor.bindDocumentEvent / bindEditableEvent se vuelven a adjuntar por ti; vuelve a leer todo lo que guardaste de getDocument() o getEditable(). |
keydown | (event) | Se pulsó una tecla dentro del área de edición. Se pasa el KeyboardEvent nativo. |
keyup | (event) | Se soltó una tecla dentro del área de edición. |
keypress | (event) | Se pulsó una tecla de carácter dentro del área de edición. |
resize | () | El editor cambió de tamaño, también cuando el usuario arrastra la esquina de redimensionamiento. |
change_html_view | (isCodeMode) | El editor cambió entre la vista WYSIWYG y la vista de código HTML. |
copyheadinglink | (url, headingId) | El usuario hizo clic en el botón de enlace junto a un encabezado (config.copyHeadingLink). url es la dirección de la página con #headingId; el editor ya ha intentado copiarla al portapapeles. |
destroy | () | Se llamó a destroy(). Desconecta aquí tus propios listeners y sockets. |
Comandos y cuadros de diálogo
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
exec_command | (state, command, value) | Un comando cualquiera está a punto de ejecutarse. Se lanza para todos los comandos, después del evento específico del comando de abajo. Cancelable: establece state.returnValue = true para encargarte tú. |
exec_command_<name> | (state, command, value) | Un comando concreto está a punto de ejecutarse, p. ej., exec_command_newdoc, exec_command_bold. Úsalo para sustituir ese comando. Cancelable: establece state.returnValue = true para encargarte tú. |
customdialog | (state, name, message) | El editor está a punto de mostrar uno de sus propios cuadros de diálogo o alertas, p. ej., uploadfailed, uploadtoobig, reachmaxlength. Muestra el tuyo en su lugar. Cancelable: establece state.returnValue = true para encargarte tú. |
charlimit | ({ chars, words, overChars, overWords }) | El contenido superó un límite de caracteres o de palabras definido por el plugin de estadísticas. |
Cargas
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
uploadprogress | (file, loaded, total) | Se enviaron bytes, cuando se usa el cargador integrado (file_upload_url) y el navegador informa del progreso. |
uploadretry | (file, attempt, error) | Una carga falló y se está reintentando; una vez por intento. Consulta uploadRetryCount. |
uploadcancel | (file, reason) | Se canceló una carga: "cancel" desde cancelUploads(), "removed" cuando se borró su imagen, o "destroy". |
Guardado automático
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
autosaved | (timestamp) | config.autoSave guardó el contenido correctamente. |
autosavefailed | (error, attempt) | Falló un guardado automático. attempt es 0 en el primer fallo y luego 1, 2… a medida que reintenta. |
Comentarios, control de cambios y revisiones
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
comment_added | ({ id, text, author }) | Se añadió un comentario. |
comment_resolved | ({ id }) | Se resolvió un comentario. |
commentsonlychanged | (name, isCommentsOnly) | El editor entró en el modo de solo comentarios o salió de él. |
review_decision_denied | (detail) | Un usuario sin permiso intentó aceptar o rechazar un cambio con seguimiento. |
revision_snapshot | ({ id, label, isNamed, createdAt }) | El plugin de historial de revisiones guardó una versión. |
revision_history_sync_error | (detail) | El plugin de historial de revisiones no pudo acceder a su almacén. |
linkcheck | (issues) | El comprobador de enlaces terminó una pasada; issues es el array de problemas que encontró. |
Vista previa de compilaciones desde el código fuente
Estos eventos existen en las compilaciones más recientes desde el código fuente, no en todos los bundles publicados ni en los recursos de demo actuales de este sitio. Usa una compilación de core y plugins probada que corresponda; adjuntar un controlador no puede añadir un evento a un runtime más antiguo.
Notificaciones de eventos que dependen de la versión
| Evento | El controlador recibe | Se lanza cuando |
|---|---|---|
autolink | (href, typedText) | Compilaciones de core recientes desde el código fuente: después de que el texto escrito se haya convertido en un enlace. href es la dirección resultante; typedText es la palabra original. Es una notificación, no un hook cancelable previo al enlace. Los core publicados más antiguos pueden no lanzarlo. |
comment_reacted | ({ id, emoji, user }) | Compilaciones recientes del plugin de reacciones a comentarios: una persona activó o desactivó un emoji en un comentario. id es el id del comentario y user es el id del usuario actual como cadena. Se lanza tanto al añadir como al quitar una reacción; lee las reacciones de la entrada en reviewLedger para conocer el estado resultante. No envía correos electrónicos ni autoriza ninguna operación en el servidor. |
Los eventos de carga, guardado automático y revisión requieren que esté cargada la función o el plugin correspondiente. Consulta exec_command para interceptar comandos, Subir archivos para las opciones de carga y la referencia de configuración para autoSave.