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

363
Visualizações
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 Respostas
Responde à pergunta

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