Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!