Sto utilizzando jQuery per scaricare alcuni file che richiedono del tempo per la creazione, quindi mostro una gif di caricamento per comunicare all'utente essere pazientare. Ma il problema è che la gif di caricamento viene mostrata e nascosta tutti in una frazione di secondo.Download di file di grandi dimensioni con jQuery e iFrame - È necessario un evento pronto per il file in modo da nascondere la gif di caricamento
C'è un modo per nascondere la gif di caricamento dopo che il download è stato completato e l'utente ha il popup di salvataggio sullo schermo?
HTML
<tr data-report_id="5">
<td>
<input type="button" id="donwload"></input>
<img class="loading" src="/Images/Loading.gif"/>
<iframe id="hiddenDownloader"></iframe>
<td>
</tr>
JS
var reportId = $(this).closest("tr").attr("data-report_id");
var url = "/Reports/Download?reportId=" + reportId;
var hiddenIFrameId = 'hiddenDownloader';
var iframe = document.getElementById(hiddenIFrameId);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameId;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
$(".loading").hide();
la soluzione che ho finito per usare
<script>
$("#download").on("CLICK", function() {
var button = $(this);
button.siblings(".loading").show();
var rowNumber = GetReportId();
var url = GetUrl();
button.after('<iframe style="display:none;" src="' + url + '" onload="loadComplete(' + rowNumber + ')" />');
}
function loadComplete(rowNumber) {
var row = $("tr[data-row_number=" + rowNumber + "]");
row.find(".loading").hide();
}
</script>
<tr data-report_id="5">
<td>
<input type="button" id="download"></input>
<img class="loading" src="/Images/Loading.gif" style="display:none;"/>
<td>
</tr>
UPDATE
Ho riscontrato problemi con questo metodo in Chrome, quindi ho modificato tutto il mio codice jquery per cercare un cookie che il codice back-end abbia impostato al termine dell'elaborazione del download. Quando il jquery ha rilevato il cookie, ha disattivato la gif di caricamento & whiteout.
Detect when browser receives file download
questo codice funziona ma non funziona per il file di testo (.txt). per favore condividi il codice per scaricare il file di testo per tutti i browser –
@ManojRana È meglio fare una nuova domanda. – epoch