打开下载对话框的最佳跨浏览器方式是什么(假设我们可以在标题中设置 content-disposion:attachment )而不离开当前页面或打开弹出窗口,这在 Internet Explorer(IE)中不起作用) 6.
无需离开页面即可打开下载窗口的最简单方法
IT技术
javascript
2021-01-24 05:19:09
6个回答
这个javascript很好,它不会打开一个新窗口或标签。
window.location.assign(url);
7 年过去了,我不知道它是否适用于 IE6,但这在 FF 和 Chrome 中提示 OpenFileDialog。
var file_path = 'host/path/file.ext';
var a = document.createElement('A');
a.href = file_path;
a.download = file_path.substr(file_path.lastIndexOf('/') + 1);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
我知道有人问了这个问题,7 years and 9 months ago
但许多已发布的解决方案似乎不起作用,例如使用<iframe>
仅适用于FireFox
和不适用于Chrome
.
最佳解决方案:
打开文件下载弹出窗口的最佳工作解决方案JavaScript
是使用HTML
链接元素,无需document.body
像其他答案中所述那样将链接元素附加到。
您可以使用以下功能:
function downloadFile(filePath){
var link=document.createElement('a');
link.href = filePath;
link.download = filePath.substr(filePath.lastIndexOf('/') + 1);
link.click();
}
在我的应用程序中,我是这样使用它的:
downloadFile('report/xls/myCustomReport.xlsx');
工作演示:
笔记:
- 您必须使用该
link.download
属性,以便浏览器不会在新选项卡中打开文件并触发下载弹出窗口。 - 这已使用多种文件类型(docx、xlsx、png、pdf 等)进行了测试。
我总是在下载链接中添加一个 target="_blank"。这将打开一个新窗口,但只要用户单击保存,新窗口就会关闭。
把它放在 HTML 头部分,将url
var设置为要下载的文件的 URL:
<script type="text/javascript">
function startDownload()
{
var url='http://server/folder/file.ext';
window.open(url, 'Download');
}
</script>
然后把这个放在 body 里,它会在 5 秒后自动开始下载:
<script type="text/javascript">
setTimeout('startDownload()', 5000); //starts download after 5 seconds
</script>
(从这里开始。)
其它你可能感兴趣的问题