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

355
Vistas
window.addEventListener ('cargar', función) no funciona en la aplicación angular

Tengo una suscripción en un componente de la aplicación angular donde necesito descargar un archivo PDF de la respuesta.

Estoy descargando un archivo PDF después de que se haya llamado al método window.open() y luego necesito cerrar la pestaña actual (nueva abierta) a través del método window.close() .

El método window.close() debe ejecutarse solo después de que se completa el evento de carga del objeto de la window y se descarga el archivo PDF, pero el evento de carga no se activa.

Aquí está el código:

 .subscribe( (res: any) => { if (response) { const formData: string = response.replace(/\n/g, ''); const win: any = window.open('', '_blank'); // open new tab win.document.write(formData); // NOT FIRED win.addEventListener('load', () => { // submit form received in response win.close(); // NOT CALLED }, false ); } } );

Nota: No quiero usar la función setTimeout() y llamar a window.close() allí, ya que el tiempo de descarga puede variar según diferentes factores (como el entorno del navegador, el tamaño del archivo, etc.), de lo contrario, es posible para resolver este problema usando:

 win?.setTimeout(() => { win?.close(); }, 3000);

Entonces, ¿qué está mal aquí? Cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Mirando su código, parece que está agregando el oyente de carga en la window y no en la win , que es probablemente lo que desea.

Aquí está la forma en que normalmente uso.

No tengo una forma de probar esto con archivos pdf, pero la forma en que descargo los archivos recibidos con una solicitud http es usando Blob. Como esto:

 const blob = new Blob([res], {type : 'application/pdf'}); const url = window.URL.createObjectURL(blob); window.open(url);

Según mi experiencia con otros tipos de archivos, esto abre la pestaña, comienza a descargar el archivo y se cierra (mientras el archivo aún se está descargando).

¡No dude en pedir aclaraciones si es necesario!

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