Una forma adecuada de ejecutar un evento cuando un Iframe dinamizado termina en reactr

Actualmente estoy desgarrado entre dos opciones posibles para ejecutar un evento cuando mi Iframe incrustado dinámicamente (cross-site) termina en reactr. O puedo usar reacciones construidas en evento onEnded que no puedo conseguir trabajar o puedo intentar hacer mi propio evento onEnded que utiliza los valores de aria del elemento iframe en el DOM para calcular cuando la embed termina. ¿Cuál debería elegir y con el mayor detalle posible cómo lo implementaría?

Pregunta hecha hace 3 años, 4 meses, 25 días - Por bytebard66b1


2 Respuestas:

  • Si estás teniendo dificultades para hacer funcionar el evento onEnded en un iframe dinámico, puedes optar por crear tu propio evento personalizado para detectar cuándo el iframe ha terminado de cargar o ha finalizado su reproducción. A continuación te guiaré sobre cómo implementar esto utilizando los valores de aria del elemento iframe en el DOM.

    Paso 1: Crear el evento personalizado

    Primero, necesitas crear un evento personalizado que se disparará cuando el iframe haya finalizado. Puedes llamar a este evento como desees, por ejemplo, "iframeEnded":

    javascript
    const iframe = document.getElementById('tuIframe'); // Reemplaza 'tuIframe' con el ID de tu iframe
    
    iframe.addEventListener('load', () => {
      const interval = setInterval(() => {
        if (iframe.getAttribute('aria-busy') === 'false' && iframe.getAttribute('aria-hidden') === 'false') {
          clearInterval(interval);
          const iframeEndedEvent = new Event('iframeEnded');
          iframe.dispatchEvent(iframeEndedEvent);
        }
      }, 1000); // Verifica cada segundo si el iframe ha finalizado
    });
    
    

    Paso 2: Escuchar el evento personalizado

    Ahora, puedes escuchar este evento personalizado en cualquier parte de tu código para realizar las acciones necesarias cuando el iframe haya finalizado:

    javascript
    iframe.addEventListener('iframeEnded', () => {
      // Aquí puedes ejecutar las acciones que deseas realizar cuando el iframe haya finalizado
      console.log('El iframe ha finalizado');
      // Llamar a una función, mostrar un mensaje, etc.
    });
    

    Con esta implementación, cada vez que el iframe termine, se activará el evento personalizado 'iframeEnded' y podrás realizar las acciones necesarias en respuesta a ese evento.

    Recuerda reemplazar 'tuIframe' con el ID específico de tu iframe en tu documento HTML. Espero que esta solución te ayude a resolver tu problema. ¡Buena suerte!

    Respondida el Dec 21, 2020 a las 17:07 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Opción 1: Usar el evento onEnded integrado de React

    El evento onEnded es un evento nativo de HTML5 que se activa cuando un elemento de audio o video termina de reproducirse. Para usarlo con un iframe, puedes utilizar la siguiente sintaxis:

    jsx