Es posible que el título no sea lo suficientemente explícito, así que déjame explicarte mi problema: tengo una lista de enlaces en mi página que apuntan a archivos de audio. Al hacer clic en cada uno de ellos, se le pedirá al navegador que descargue el archivo de destino.
Lo que me gustaría tener es un <button> en la parte inferior que descargaría todos los enlaces de la lista.
Aquí está mi código:
const downloadAll = () => { const allLinks = document.querySelectorAll('a'); for (i=0; i< allLinks.length; i++) { allLinks[i].click(); } } <a href="https://link1">Download</a> <a href="https://link2">Download</a> <a href="https://link3">Download</a> <button onclick="downloadAll()">download all</button> Cuando el usuario hace clic en <button> , solo se descarga el último .
He buscado mucho y probado diferentes opciones, pero no pude encontrar una que funcionara. Creo que la parte de download es el problema.
intente agregar target="_blank" a sus enlaces así
<a href="https://link1" target="_blank">Download</a> <a href="https://link2" target="_blank">Download</a> <a href="https://link3" target="_blank">Download</a>esto le indicará al navegador que procese cada enlace en una pestaña separada. Sin embargo, las pestañas pueden estar bloqueadas por el navegador, así que preste atención a la esquina superior derecha (en Chrome) puede haber una notificación sobre ventanas emergentes bloqueadas.
Aquí está el enlace a un artículo que muestra otras formas de usar diferentes bibliotecas. https://medium.com/twodigits/multi-file-download-using-javascript-9b0b8a14639b
Use el atributo de descarga para asignar a nombre de archivo a cada etiqueta que activará la descarga múltiple en el navegador
const downloadAll = () => { const allLinks = document.querySelectorAll('a'); for (i=0; i<= allLinks.length; i++) { var each = allLinks[i] each.download = each.href each.click() } }