Eventos de JavaScript

Encuentre una descripción general de los eventos personalizados de JavaScript tal como se utilizan en CONTENTdm y un ejemplo.

Los eventos personalizados utilizados en CONTENTdm son activados por la aplicación de front-end del sitio web basada en React. Estos eventos se basan en las clases CSS y ofrecen varias opciones de temporización: :enter, :ready, :update y :leave.Si ya está familiarizado con el funcionamiento de los eventos de CONTENTdm, puede ir directamente a la Lista de eventos del ciclo de vida de JavaScript.

Dependiendo de lo que haga su código JavaScript, es posible que desee que se ejecute en uno o más de los puntos mencionados del ciclo de vida de la página. Por ejemplo, un script simple que redirija al usuario final a otra página probablemente deba ejecutarse en un evento:enter , ya que ese es el punto más temprano del ciclo de vida antes de la representación y una redirección de página no necesita ni desea que se muestre ninguna parte de la interfaz de usuario. 

Por otro lado, un script que modifica los elementos de la interfaz de usuario en la página necesitaría esperar hasta que  ocurra un evento:ready para que elHTML esté disponible para su manipulación. El evento :ready será el más utilizado para cualquier operación de JavaScript que agregue o modifique la interfaz de usuario en una página.

El evento :update será utilizado por el JavaScript personalizado que depende de condiciones específicas dentro de una página. Por ejemplo, si su script personalizado examina los resultados de búsqueda de un usuario final y les añade algo de interfaz de usuario, querrá que ese código siga ejecutándose cada vez que el usuario haga clic en «siguiente» para ver otro conjunto de resultados. Las acciones «siguiente» y «anterior» están vinculadas al evento :update. Puede determinar qué acciones del usuario final son :update eventos frente a :enter eventos al observar si se vuelve a cargar la página completa. En CONTENTdm, si la URL en la barra de direcciones del navegador no cambia, lo más probable es que la acción del usuario final esté ocurriendo simultáneamente con un evento :update . Muchas personalizaciones comunes de JavaScript deberán suscribirse a los eventos :ready y :update de la página para que se activen una vez cuando se inicia la página y en cualquier momento posterior en que las acciones del usuario final cambien el estado de la página.

El evento :leave es útil si necesita limpiar cualquier cambio que su código personalizado haya podido realizar. Por ejemplo, si su código crea una función personalizada en el encabezado de la página, pero solo en ciertas páginas o dependiendo de las condiciones dentro de una página, es posible que no desee que esa interfaz de usuario persista cuando el usuario haga clic para ir a otra página. Puede crear una función de limpieza que se active solo en un evento :leave y elimine o restablezca la interfaz de usuario que usted creó.

Hay un evento especial que se dispara una vez durante la carga inicial de la aplicación web: cdm-app:ready. Este evento se activa una sola vez para una sesión de usuario final específica y es el primer momento en el ciclo de vida de la aplicación.


Aquí tiene un ejemplo sencillo de JavaScript que se suscribe a estos eventos. El siguiente código aplica un color de fondo aleatorio a cada una de las tarjetas de colección en la página de inicio predeterminada de CONTENTdm.

// // cambiar el color de fondo de las tarjetas en la página de inicio // // función generadora de colores aleatorios getRandomColor() { var letras = '0123456789ABCDEF'; var color = '#'; for (var i = 0; i < 6; i++) { color += letras[Math.floor(Math.random() * 16)]; } return color; } // suscribirse al evento de la página de inicio lista document.addEventListener('cdm-home-page:ready', function(){ Array.from(document.querySelectorAll('.cdm-collection-card')) .forEach(function(card){ card.firstChild.style.backgroundColor = getRandomColor(); }); }); y suscríbase al evento de actualización de la página de inicio document.addEventListener('cdm-home-page:update', function(){ Array.from(document.querySelectorAll('.cdm-collection-card')) .forEach(function(card){ card.firstChild.style.backgroundColor = getRandomColor(); }); });