Internet Explorerでファイルの自動ダウンロードを初期化するにはどうすればよいですか?
たとえば、ダウンロードページで、ダウンロードリンクを表示し、「ダウンロードが自動的に開始されない場合は...」などのメッセージを表示します。ダウンロードは、ページが読み込まれた直後に開始されます。
Firefoxではこれは簡単です。ヘッダーにメタタグを含める必要があります。<meta http-equiv="Refresh" content="n;url">
(nは秒数、url
はダウンロードURL)です。これはInternet Explorerでは機能しません。 Internet Explorerブラウザーでこれを機能させるにはどうすればよいですか?
SourceForge は、ダウンロードするファイルを指す<iframe>
属性を持つsrc=""
要素を使用します。
<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>
(副作用:リダイレクトなし、JavaScriptなし、元のURLは変更されません。)
Ihateサイトがダウンロードを非常に複雑にする場合と 古き良きリンクの代わりにハックを使用する 。
<a href="file.Zip">Start automatic download!</a>
できます!すべてのブラウザで!
通常、インラインで表示されるファイル(画像など)をダウンロードする場合、HTML5には、ファイルのダウンロードを強制するdownload
属性があります。また、ファイル名を上書きすることもできます( より良い方法はありますが ):
<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
色の取得、ブラウザーの再起動後にページが開いたままになっている場合の再ダウンロードなどができないことです。
最近、ページに次のスクリプトを配置することで解決しました。
setTimeout(function () { window.location = 'my download url'; }, 5000)
メタリフレッシュの方がいいと思いますが、うまくいかない場合はどうすればいいですか...
私は同様の問題を抱えていましたが、上記の解決策はどれもうまくいきませんでした。これが私の試みです(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>
すべての場合に機能するはずです。
簡単な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>
これは、1秒半待ってから、ダウンロードするファイルを参照するiframeをdivに追加するだけです。 iframeがページ上で更新されると、ブラウザがファイルをダウンロードします。そのような単純な。 :D
Chrome、firefox、IE8以上で動作します。
var link = document.createElement('a');
document.body.appendChild(link);
link.href = url;
link.click();
私はこれを使用しましたが、動作しているようで、フレームワークなしの単純な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>
注:これは、ページがロードされた瞬間にタイムアウトを開始します。
これは私がいくつかのサイトで使用しているものです(jQueryが必要です)。
$(document).ready(function() {
var downloadUrl = "your_file_url";
setTimeout("window.location.assign('" + downloadUrl + "');", 1000);
});
ファイルは1秒後に自動的にダウンロードされます。
もう一つ:
var a = document.createElement('a');
a.setAttribute('href', dataUri);
a.setAttribute('download', filename);
var aj = $(a);
aj.appendTo('body');
aj[0].click();
aj.remove();
私はチェックして見つけました、それはアンカータグまたは入力ボタンにonclickイベントを書くことでボタンクリックで動作します
onclick='javascript:setTimeout(window.location=[File location], 1000);'
ルーツに戻り、私はこれを使用します:
<meta http-equiv="refresh" content="0; url=YOURFILEURL"/>
WC3準拠ではないかもしれませんが、すべてのブラウザーで完璧に動作します。HTML5/ JQUERY/Javascriptはありません。
あいさつトム:)
必ずファイルを提供してくださいwithout no-cache header!ユーザーが最初に保存せずにダウンロードを「開こう」とすると、IEに問題が発生します。
これはあなたに役立つと思います。しかし、ビジターは時間をかけずに数秒で何かを得た場合、簡単であるため、再びサイトにアクセスします。 <a href="file.Zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>
これは私にとってはうまくいくようでした-すべてのブラウザで。
<script type="text/javascript">
window.onload = function(){
document.location = 'somefile.Zip';
}
</script>
ダイナミックリンクを使用してダウンロードをトリガーしようとする場合、ブラウザ間で一貫して動作させるのは難しいです。
IE10 +でPDFのダウンロードに問題が発生し、 @ dandavis 'download
関数を使用しました(- https://github.com/rndme/download =)。
IE10 +にはmsSaveBlob
が必要です。
これがすべてのブラウザで機能することを願っています。自動ダウンロードのタイミングを設定することもできます。
<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>
素敵な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>.