仅使用JavaScript下载文件

仅使用JavaScript下载文件,javascript,Javascript,要使用JavaScript以编程方式触发位于服务器上的文件,我目前正在执行以下操作: HTML JavaScript document.getElementById('downloadPDF')。单击(); 这很管用,但我觉得有点“黑客味”。有没有一种更好、更直接的方法,不用使用HTML和触发点击 重要提示:没有库或数据URI。文件应该下载而不是打开。这只是您在问题中提供的方法的扩展。不同之处在于,此函数在后台完成所有工作 //DL函数 const download=函数(文件){ /

要使用JavaScript以编程方式触发位于服务器上的文件,我目前正在执行以下操作:

HTML

JavaScript

document.getElementById('downloadPDF')。单击();
这很管用,但我觉得有点“黑客味”。有没有一种更好、更直接的方法,不用使用HTML和触发点击


重要提示:没有库或数据URI。文件应该下载而不是打开。

这只是您在问题中提供的方法的扩展。不同之处在于,此函数在后台完成所有工作

//DL函数
const download=函数(文件){
//创建一个标记
常量a=document.createElement('a');
//Set href
a、 href=文件;
//设置文件名
a、 下载=file.substr(file.lastIndexOf('/')+1);
//将标记附加到正文
文件.正文.附件(a);
//点击它
a、 单击();
//除去
文件.body.removeChild(a);
}
//下载

下载('https://file-examples-com.github.io/uploads/2017/02/zip_2MB.zip');这是我的实现,我更喜欢它,因为它更干净:

document.querySelector( 'body' ).insertAdjacentHTML( 'beforeend', '<a id="downloadPDF" href="/my.pdf" download style="display: none;"></a>' );

document.getElementById( 'downloadPDF' ).click();
document.querySelector('body').insertAdjacentHTML('beforeend','';
getElementById('downloadPDF')。单击();

这是否回答了您的问题@A.Meshu似乎OP已经很清楚那篇文章中的信息了,“它是有效的,但感觉相当“黑客”。。。欢迎使用web应用程序编程。您可以更改您的函数以动态创建隐藏标记,单击它并删除。。。
<script type="text/javascript">
    document.getElementById('downloadPDF').click();
</script>
document.querySelector( 'body' ).insertAdjacentHTML( 'beforeend', '<a id="downloadPDF" href="/my.pdf" download style="display: none;"></a>' );

document.getElementById( 'downloadPDF' ).click();