Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda