如何在Internet Explorer中初始化文件的自动下载?
例如,在下载页面中,我想要显示下载链接并显示一条消息:“如果下载没有自动启动......等等”。下载应该在页面加载后不久开始。
在Firefox中,这很简单,只需在标题中加入元标记<meta http-equiv="Refresh" content="n;url">
,其中n是秒数,url
是下载URL。这在Internet Explorer中不起作用。如何在Internet Explorer浏览器中使用它?
答案 0 :(得分:101)
SourceForge使用<iframe>
元素,src=""
属性指向要下载的文件。
<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>
(副作用:没有重定向,没有JavaScript,原始网址保持不变。)
答案 1 :(得分:49)
我讨厌当网站下载太多并use hacks instead of a good old link。
<a href="file.zip">Start automatic download!</a>
有效!在每个浏览器中!
如果要下载通常以内联方式显示的文件(例如图像),则HTML5具有强制下载文件的download
属性。它还允许您覆盖文件名(although there is a better way to do it):
<a href="report-generator.php" download="result.xls">Download</a>
如果您想在下载后显示“谢谢”,请使用:
<a href="file.zip"
onclick="if (event.button==0)
setTimeout(function(){document.body.innerHTML='thanks!'},500)">
Start automatic download!
</a>
setTimeout
中的功能可能更为先进,例如通过AJAX下载整页(但不要离开页面 - 不要触摸window.location
或激活其他链接)。
重点是下载链接是真实的,可以被下载加速器复制,拖动,拦截,获取:visited
颜色,如果在浏览器重启后页面保持打开状态,则不会重新下载,等等。 / p>
答案 2 :(得分:21)
我最近通过在页面上放置以下脚本来解决它。
setTimeout(function () { window.location = 'my download url'; }, 5000)
我同意元刷新会更好但是如果它不起作用你会做什么......
答案 3 :(得分:21)
我遇到了类似的问题,上述解决方案都没有为我工作。这是我的尝试(需要jquery):
$(function() {
$('a[data-auto-download]').each(function(){
var $this = $(this);
setTimeout(function() {
window.location = $this.attr('href');
}, 2000);
});
});
用法:只需将名为data-auto-download
的属性添加到指向相关下载的链接:
<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="/your/file/url">here</a>.</p>
它应该适用于所有情况。
答案 4 :(得分:7)
一小段jQuery为我解决了这个问题。
$(function() {
$(window).bind('load', function() {
$("div.downloadProject").delay(1500).append('<iframe width="0" height="0" frameborder="0" src="[YOUR FILE SRC]"></iframe>');
});
});
在我的HTML中,我只是
<div class="downloadProject"></div>
所有这一切都是等待一秒半,然后使用iframe附加div来引用您要下载的文件。当iframe更新到页面上时,浏览器会下载该文件。就那么简单。 :d
答案 5 :(得分:5)
我用过这个,看起来很有用,只是简单的JS,没有框架:
Your file should start downloading in a few seconds.
If downloading doesn't start automatically
<a id="downloadLink" href="[link to your file]">click here to get your file</a>.
<script>
var downloadTimeout = setTimeout(function () {
window.location = document.getElementById('downloadLink').href;
}, 2000);
</script>
注意:这会在页面加载时启动超时。
答案 6 :(得分:5)
适用于Chrome,Firefox和IE8及以上版本:
var link = document.createElement('a');
document.body.appendChild(link);
link.href = url;
link.click();
答案 7 :(得分:5)
这是我在某些网站上使用的(需要jQuery)。:
$(document).ready(function() {
var downloadUrl = "your_file_url";
setTimeout("window.location.assign('" + downloadUrl + "');", 1000);
});
文件会在1秒后自动下载。
答案 8 :(得分:3)
我检查并发现,它可以通过将onclick事件写入Anchor标签或输入按钮来点击按钮
onclick='javascript:setTimeout(window.location=[File location], 1000);'
答案 9 :(得分:2)
回到根,我用这个:
<meta http-equiv="refresh" content="0; url=YOURFILEURL"/>
也许不符合WC3标准但在所有浏览器上都很完美,没有HTML5 / JQUERY / Javascript。
问候汤姆:)
答案 10 :(得分:2)
请务必提供文件,不带无缓存标头! IE有问题,如果用户试图“打开”下载而不先保存。
答案 11 :(得分:2)
一个:
var a = document.createElement('a');
a.setAttribute('href', dataUri);
a.setAttribute('download', filename);
var aj = $(a);
aj.appendTo('body');
aj[0].click();
aj.remove();
答案 12 :(得分:1)
我认为这对你有用。但是,如果他们在几秒钟内得到一些东西而不花费更多时间,他们也将再次访问您的网站,访问者很容易。
<a href="file.zip"
onclick="if (event.button==0)
setTimeout(function(){document.body.innerHTML='thanks!'},500)">
Start automatic download!
</a>
答案 13 :(得分:1)
这对我来说似乎适用于所有浏览器。
<script type="text/javascript">
window.onload = function(){
document.location = 'somefile.zip';
}
</script>
答案 14 :(得分:1)
对于那些尝试使用动态链接来触发下载的人来说,让它在浏览器中保持一致是很棘手的。
我在IE10 +下载PDF时遇到了问题并使用了@dandavis' download
函数(https://github.com/rndme/download)。
IE10 +需要msSaveBlob
。
答案 15 :(得分:1)
我希望这适用于所有浏览器。您也可以设置自动下载时间。
<html>
<head>
<title>Start Auto Download file</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(function() {
$('a[data-auto-download]').each(function(){
var $this = $(this);
setTimeout(function() {
window.location = $this.attr('href');
}, 2000);
});
});
</script>
</head>
<body>
<div class="wrapper">
<p>The download should start shortly. If it doesn't, click
<a data-auto-download href="auto-download.zip">here</a>.</p>
</div>
</body>
</html>
答案 16 :(得分:0)
好的jquery解决方案:
jQuery('a.auto-start').get(0).click();
您甚至可以在<a>
标签内设置不同的文件名进行下载:
Your download should start shortly. If not - you can use
<a href="/attachments-31-3d4c8970.zip" download="attachments-31.zip" class="download auto-start">direct link</a>.
答案 17 :(得分:0)
<meta http-equiv="Refresh" content="n;url">
就是这样。容易吧?
<meta http-equiv="Refresh" content="n;url">