Как запустить автоматическую загрузку файла в Internet Explorer?
как инициализировать автоматическую загрузку файла в Internet Explorer?
например, на странице загрузки, я хочу, чтобы ссылка на скачивание появится и сообщение: "если загрузка не начнется автоматически .... прием." Загрузка должна начаться вскоре после загрузки страницы.
в Firefox это легко, просто нужно включить мета тег в заголовке, <meta http-equiv="Refresh" content="n;url">
где n-количество секунд и url
- это URL-адрес загрузки. Это не работает в обозреватель Internet Explorer. Как я могу сделать эту работу в браузерах Internet Explorer?
15 ответов:
SourceForge использует
<iframe>
с элементомsrc=""
атрибут, указывающий на файл для загрузки.<iframe width="1" height="1" frameborder="0" src="[File location]"></iframe>
(побочный эффект: нет перенаправления, нет JavaScript, исходный URL-адрес остается неизменным.)
Я ненавижу когда сайты усложняют загрузку так много и используйте хаки вместо старой доброй ссылки.
мертвая простая версия:
<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>
у меня была аналогичная проблема, и ни одно из вышеперечисленных решений не работало для меня. Вот моя попытка (требуется 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>
Он должен работать во всех случаях.
Я недавно решил это, поместив следующий скрипт на странице.
setTimeout(function () { window.location = 'my download url'; }, 5000)
Я согласен, что мета-обновление было бы лучше, но если оно не работает, что вы делаете...
простой бит 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>
все это делает, это подождать секунду с половиной, а затем добавить div с iframe со ссылкой на файл, который вы хотите загрузить. Когда iframe обновляется на странице, Ваш браузер загружает файл. Просто. : D
Это то, что я использую в некоторых сайтах (требуется jQuery).:
$(document).ready(function() { var downloadUrl = "your_file_url"; setTimeout("window.location.assign('" + downloadUrl + "');", 1000); });
файл загружается автоматически через 1 секунду.
я использовал это, кажется, работает и просто 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>
Примечание: это запускает тайм-аут в момент загрузки страницы.
работает на Chrome, firefox и IE8 и выше:
var link = document.createElement('a'); document.body.appendChild(link); link.href = url; link.click();
Я проверил и нашел, он будет работать на кнопку нажмите с помощью записи события onclick для привязки тега или кнопки ввода
onclick='javascript:setTimeout(window.location=[File location], 1000);'
обязательно подавайте файл без заголовок без кэша! IE имеет проблемы с этим, если пользователь пытается "открыть" загрузку без сохранения в первую очередь.
назад к корням, я использую это:
<meta http-equiv="refresh" content="0; url=YOURFILEURL"/>
возможно, не соответствует WC3, но отлично работает во всех браузерах, без HTML5/JQUERY/Javascript.
Привет Тома :)
Это, казалось, работа для меня - во всех браузерах.
<script type="text/javascript"> window.onload = function(){ document.location = 'somefile.zip'; } </script>
Я думаю, что это будет работать для вас. Но посетители легко, если они получили что-то в секундах, не тратя больше времени, и, следовательно, они также снова посетят ваш сайт.
<a href="file.zip" onclick="if (event.button==0) setTimeout(function(){document.body.innerHTML='thanks!'},500)"> Start automatic download! </a>
для тех, кто пытается запустить загрузку с помощью динамическая ссылка сложно заставить его работать последовательно в разных браузерах.
у меня были проблемы в 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>