Ich habe nach einer guten Möglichkeit gesucht, mit Javascript den Download einer Datei zu starten, genau wie diese Frage nahelegt. Diese Antworten waren jedoch nicht hilfreich. Ich habe dann einige xbrowser-Tests durchgeführt und festgestellt, dass ein iframe auf allen modernen Browsern IE> 8 am besten funktioniert.
downloadUrl = "http://example.com/download/file.zip";
var downloadFrame = document.createElement("iframe");
downloadFrame.setAttribute('src',downloadUrl);
downloadFrame.setAttribute('class',"screenReaderText");
document.body.appendChild(downloadFrame);
class="screenReaderText" ist meine Klasse, um Inhalte zu stylen, die vorhanden, aber nicht sichtbar sind.
CSS:
.screenReaderText {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
das gleiche wie .visuallyHidden in html5boilerplate
Ich ziehe dies der Javascript-window.open-Methode vor, da die iframe-Methode bei einer Unterbrechung des Links einfach nichts unternimmt, anstatt auf eine leere Seite umzuleiten, die besagt, dass die Datei nicht geöffnet werden konnte.
window.open(downloadUrl, 'download_window', 'toolbar=0,location=no,directories=0,status=0,scrollbars=0,resizeable=0,width=1,height=1,top=0,left=0');
window.focus();