Szukałem dobrego sposobu na użycie javascript do zainicjowania pobierania pliku, tak jak sugeruje to pytanie. Jednak te odpowiedzi nie były pomocne. Następnie przeprowadziłem kilka testów xbrowser i odkryłem, że iframe działa najlepiej we wszystkich nowoczesnych przeglądarkach IE> 8.
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" to moja klasa do stylizowania zawartości, która jest obecna, ale nie można jej wyświetlić.
css:
.screenReaderText {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
tak samo jak .visuallyHidden w html5boilerplate
Wolę to od metody window.open w javascript, ponieważ jeśli łącze jest zepsute, metoda iframe po prostu nie robi nic, w przeciwieństwie do przekierowywania na pustą stronę z informacją, że nie można otworzyć pliku.
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();