1
resposta

Fechar uma aba após um download iniciado

Estou trabalhando em um projeto onde o usuário tem a opção de clicar em um botão da página em que eles está para exportar-la como um pdf. Para o download uma nova aba é aberta com as informações que eu preciso que sejam printadas no pdf e o download inicializa automaticamente. Meu problema está em fechar essa nova aba, gostaria que ela fechasse automaticamente assim que o download se inicializasse. Até o momento só consegui fazer com que a aba se fechasse após um determinado tempo setado hardcode. Preciso de ajuda com algum método diferente disso. Estou utilizando react no front.

1 resposta

Olá, Marcus!

Entendo a sua situação. No entanto, devido a restrições de segurança dos navegadores, não é possível fechar uma aba ou janela automaticamente após o download ser iniciado. Isso ocorre porque os navegadores modernos não permitem que scripts de páginas da web fechem janelas que não foram abertas por eles, como uma medida de segurança para evitar abusos.

No entanto, há uma maneira de contornar isso, mas não é perfeita. Você pode tentar usar a função window.close() do JavaScript para fechar a aba. No entanto, isso só funcionará se a aba foi aberta pelo mesmo script que está tentando fechá-la. Aqui está um exemplo:

// Abrir a nova aba
let newTab = window.open('url_para_download');

// Fechar a nova aba
newTab.close();

Lembre-se que essa solução pode não funcionar em todos os navegadores, pois depende de como eles lidam com as restrições de segurança.

Outra abordagem seria não abrir uma nova aba para o download, mas sim fazer o download diretamente na mesma aba. Isso pode ser feito usando a biblioteca jsPDF se você estiver gerando o PDF no lado do cliente. Aqui está um exemplo:

import jsPDF from 'jspdf';

// Crie um novo documento PDF
let doc = new jsPDF();

// Adicione algum texto
doc.text('Hello world!', 10, 10);

// Inicie o download do PDF
doc.save('a4.pdf');

Espero ter ajudado e bons estudos!