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

155
Visualizações
Ventana que fue abierta por window.open no se cerrará

Tengo problemas con un fragmento de código que ha funcionado durante años, pero parece haber dejado de funcionar ahora.

Estoy abriendo una ventana con un formulario de inicio de sesión y estoy escuchando a través de un WebSocket los eventos relacionados con ese inicio de sesión. Después de que el inicio de sesión fue exitoso, quiero cerrar la ventana (que mi script abrió y mantuvo la referencia) después de un breve momento. Estoy usando el siguiente código:

 const windowManager = { window: null, eventType: null, } function openWindow({ url, eventType }) { windowManager.window = window.open(url) windowManager.eventType = eventType } function closeWindow({ eventType }) { if (windowManager.window && windowManager.eventType == eventType) { setTimeout(() => { windowManager.window && windowManager.window.close() windowManager.window = null }, 100) } }

He confirmado que se llama windowManager.window.close() y no arroja un error. También extraje el código de la aplicación y lo probé por separado y todavía no cierra la ventana. Como dije, este fragmento de código ha funcionado antes y no se modificó en los últimos dos años más o menos.

Estoy usando los siguientes navegadores:

  • Safari 15.3
  • Firefox 97.0b9 (Edición para desarrolladores)
  • Cromo 94.0.4606.61

Estoy agradecido por cualquier sugerencia que pueda ayudar a resolver este problema. ¡Muchas gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de darme cuenta de que el código anterior funcionaba perfectamente con otros sitios como Google o GitHub, descubrí que el encabezado Cross-Origin-Opener-Policy en nuestro backend de autenticación (que era el sitio que se abrió con el código) es el culpable. Acabábamos de actualizar Helmet a la versión 5, que agregó el encabezado de forma predeterminada.

Nuestra solución fue establecer Cross-Origin-Opener-Policy en el same-origin-allow-popups tanto en la ventana de origen como en la de destino (que están alojadas en el mismo origen, pero atendidas por diferentes servidores). También funcionó al configurarlo como unsafe-none para la ventana de destino sin configurarlo en absoluto en la ventana de origen.

about 4 years ago · Juan Pablo Isaza Relatório
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