Enviar niño url a padre al cerrar ventana emergente en javascript

Mi ventana emergente es básicamente un formulario de autorización que envía una url cuando la autenticación es exitosa. Ahora lo que sucede es que la url de respuesta se muestra en la ventana emergente url caja. Quiero poder enviar esta url de respuesta a la ventana padre y extraer las fichas de ella. Traté de escaparate.opener y lo que no pero no puedo conseguir que la url de respuesta sea enviada al padre al cerrar la ventana emergente. ¿Alguien tiene alguna idea de cómo hacer esto?

Gracias.

Pregunta hecha hace 3 años, 4 meses, 26 días - Por syntaxsensei


2 Respuestas:

  • Parece que estás tratando de comunicar la URL de respuesta de la ventana emergente a la ventana padre una vez que la ventana emergente se cierre. Para lograr esto, puedes seguir estos pasos:

    • En la ventana emergente, una vez que obtengas la URL de respuesta, puedes guardarla en una variable en el objeto `window.opener`.
    javascript
    // En la ventana emergente
    window.opener.urlRespuesta = 'tu_url_de_respuesta';
    
    • Luego, puedes escuchar el evento `beforeunload` en la ventana emergente para ejecutar una función antes de que la ventana se cierre.
    javascript
    // En la ventana emergente
    window.onbeforeunload = function() {
       window.opener.urlRespuesta = 'tu_url_de_respuesta';
    };
    
    • En la ventana padre, puedes acceder a la URL de respuesta guardada en la variable `urlRespuesta` del objeto `window.opener`.
    javascript
    // En la ventana padre
    var urlRespuesta = window.opener.urlRespuesta;
    console.log(urlRespuesta);
    

    Al seguir estos pasos, podrás enviar la URL de respuesta de la ventana emergente a la ventana padre una vez que se cierre la ventana emergente. Espero que esta solución te sea útil. ¡Déjame saber si necesitas más ayuda!

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

    Votos positivos: 0 | Votos negativos: 0

  • Solución: Utiliza la función postMessage() para enviar mensajes entre la ventana emergente y la ventana principal.

    Código para la ventana emergente:

    javascript
    // Recibe la URL de respuesta del servidor
    window.addEventListener('message', function(event) {
      if (event.origin === 'https://example.com') { // Reemplaza con el origen de la ventana principal
        var responseUrl = event.data;
        // Envía la URL de respuesta a la ventana principal al cerrar la ventana emergente
        window.opener.postMessage(responseUrl, 'https://example.com'); // Reemplaza con el origen de la ventana principal
      }
    });
    
    // Cierra la ventana emergente
    window.close();
    

    Código para la ventana principal:

    javascript
    // Escucha los mensajes de la ventana emergente
    window.addEventListener('message', function(event) {
      if (event.origin === 'https://example.com') { // Reemplaza con el origen de la ventana emergente
        var responseUrl = event.data;
        // Extrae los tokens de la URL de respuesta
        // ...
      }
    });
    

    Explicación:

    El código de la ventana emergente escucha los mensajes de la ventana principal y espera una URL de respuesta. Cuando la recibe, la envía de vuelta a la ventana principal mediante postMessage(). La ventana principal escucha los mensajes de la ventana emergente y extrae los tokens de la URL de respuesta.

    Nota:

    Reemplaza "https://example.com" con el origen real de la ventana principal y la ventana emergente. Asegúrate de que tanto la ventana principal como la emergente tengan el mismo origen permitido para la comunicación entre dominios.

    Respondida el Dec 21, 2020 a las 10:26 - por Gemini

    Votos positivos: 0 | Votos negativos: 0