Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
Los detectores de eventos no funcionan en la ventana a la que se ha hecho referencia después de volver a cargar la página

Recientemente encontré un error extraño (?) Al intentar manejar una ventana externa abierta a través de Javascript. La idea era agregar un detector de eventos de unload a la ventana para registrar si se ha cerrado. Ahora también es posible que la página principal se actualice, en cuyo caso recuperaré la referencia a la ventana a través de window.open usando el mismo nombre de destino. Fue entonces cuando tuve que aprender que los detectores de eventos básicos como load , unload y antes de descargar ya no se beforeunload se recarga la página.

Probé este código con Firefox y Chrome:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <button onclick="openWindow()">Open window</button> <span id="state"></span> </body> <script> document.getElementById("state").innerHTML = "Closed"; function openWindow() { const extWindow = window.open("about:blank", "ExtWindow", 'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,width=1600,height=900'); document.getElementById("state").innerHTML = "Opened"; extWindow.addEventListener('load', () => console.log('load')); extWindow.addEventListener('beforeunload', () => console.log('beforeunload')); extWindow.addEventListener('unload', () => { document.getElementById("state").innerHTML = "Closed"; console.log('unload'); }); } </script> </html>

Para replicar este comportamiento, abra la ventana a través del botón, luego vuelva a cargar la página con la ventana aún abierta, haga clic en el botón nuevamente para recuperar la referencia, luego cierre la ventana. Ninguno de los eventos se activará si la página se ha recargado. (Desafortunadamente, window.open no parece funcionar dentro de un fragmento).

No estoy exactamente seguro de si este comportamiento es intencional, pero si es así, ¿hay algo que pueda hacer para que funcione?

Sé que podría recurrir a setInterval para verificar la propiedad closed de la ventana, pero me gustaría evitar cualquier sondeo y confiar en los detectores de eventos.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda