如何在不让浏览器导航到新页面的情况下使用 JS 触发音频链接的下载?

问题描述

我想编写一个从网页下载一些音频文件的脚本。问题是,通过 element.click() 模拟“点击”效果不佳,因为浏览器只是导航到该锚点元素的 URL。 例如:

<a href="https://www.somesite.com/someAudioFile.mp3"></a>

const link = document.querySelector('a');

link.click();//Navigates to the url...

我需要的是能够收集所有我需要的链接,并简单地触发下载,不出现另存为对话框

有可能吗?如果是这样,如何?

解决方法

你可以为元素添加下载属性,无需 javascript

<a href="https://www.somesite.com/someAudioFile.mp3" download></a>

或使用自定义名称下载

<a href="https://www.somesite.com/someAudioFile.mp3" download="music"></a>
,
link.addEventListener('click',(e) => e.preventDefault());