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

145
Views
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 answers
Answer question

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 Report
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!