Javascript per download di files multipli (preloader)

mitma

Nuovo Utente
5 Dic 2012
4
0
0
Pisa
chembioscripting.hol.es
Salve a tutti, sto pian piano apportando migliorie al mio sito, arrivando a un punto abbastanza cruciale:

il sito fa uso di contenuti in 3D, nel formato X3D, che sono abbastanza grossi come dimensione, per cui è richiesto un certo tempo per il completo caricamento della pagina. Mi serviva notificare all'utente quando esso è teminato per poter procedere con la navigazione, e il rimedio per ora utilizzato è l'uso di un timer impostato per un discreto eccesso (75 secondi), che dovrebbero essere in genere anche troppi, ma ciò dipende in realtà dalla velocità della connessione della rete e dallo svuotamento o meno della cache del browser dell'utente, qualora il sito sia stato già visitato, ragion per cui insorgono dei tempi di attesa non necessari che vorrei a questo punto risolvere.

Stavo cercando in rete una sorta di preloader, ed ho trovato alcune possibità, come PxLoader e PreloadJS, ma non mi è riuscito adeguarle al mio scopo. Ho continuato la ricerca giungendo a questo ottimo demo che funziona benissimo per il download di un solo file di 10MB. Nel mio caso, invece, ho l'esigenza di veder visualizzato il download di 6 files multipli, che ammontano a un totale di 8856432 bytes (8.9MB):

http://grvsitest.altervista.org/media/source/cartoon_html/BG_0_coordBinary.bin
http://grvsitest.altervista.org/media/source/cartoon_html/BG_0_normalBinary.bin
http://grvsitest.altervista.org/media/source/cartoon_html/BG_0_colorBinary.bin
http://grvsitest.altervista.org/media/source/surface_html/BG_0_coordBinary.bin
http://grvsitest.altervista.org/media/source/surface_html/BG_0_normalBinary.bin
http://grvsitest.altervista.org/media/source/surface_html/BG_0_colorBinary.bin

Ho provato a modificare lo script con dei tentativi che però sono falliti:

Primo tentativo:

Codice:
 <script type="text/javascript">
var progressCode = $('#progressCode');
var progressContainer = $('#progressContainer');
function updateCode () {
progressCode.text(progressContainer.html());
}
updateCode();

var totalBytes = 8856432; // CHANGE ME WITH THE SIZE OF THE RESOURCE
var req = new XMLHttpRequest();
var urlList = new Array("source/surface_html/BG_0_colorBinary.bin", "source/surface_html/BG_0_coordBinary.bin", "source/surface_html/BG_0_normalBinary.bin", "source/cartoon_html/BG_0_colorBinary.bin", "source/cartoon_html/BG_0_coordBinary.bin", "source/cartoon_html/BG_0_normalBinary.bin");
var progress = $('#download');
progress.attr("max", totalBytes);
req.addEventListener("progress", function (e) {
progress.attr("value", e.loaded).text(Math.floor(100*e.loaded/totalBytes)+" %");
updateCode();
}, false);
req.addEventListener("load", function (e) {
// THE RESOURCE IS LOADED
progress.replaceWith('Downloaded!');
updateCode();
});
for (var x = 0; x < urlList.length; x++) {
req.open("GET","urlList[x]",true);
req.send();
}
</script>

Secondo tentativo:

Codice:
<script type="text/javascript">
var progressCode = $('#progressCode');
var progressContainer = $('#progressContainer');
function updateCode () {
progressCode.text(progressContainer.html());
}
updateCode();

var totalBytes = 8856432; // CHANGE ME WITH THE SIZE OF THE RESOURCE
var urlList = new Array("source/surface_html/BG_0_colorBinary.bin", "source/surface_html/BG_0_coordBinary.bin", "source/surface_html/BG_0_normalBinary.bin", "source/cartoon_html/BG_0_colorBinary.bin", "source/cartoon_html/BG_0_coordBinary.bin", "source/cartoon_html/BG_0_normalBinary.bin");
var req = new XMLHttpRequest(urlList);
var progress = $('#download');
function listenerForI( i ) {
progress.attr("max", totalBytes);
req.addEventListener("progress", function (e) {
progress.attr("value", e.loaded).text(Math.floor(100*e.loaded/totalBytes)+" %");
updateCode();
}, false);
req.addEventListener("load", function (e) {
// THE RESOURCE IS LOADED
progress.replaceWith('Downloaded!');
updateCode();
});
req.open("GET","urlList[i]",true);
req.send();
}
for( var i = 0; i < urlList.length; i++ ) {
listenerForI( i );
}
</script>

Non sono un esperto di javascript, ma l'autore ha detto che lo script è abbastanza semplice da estendere per il supporto del download di files multipli. Vorrei un aiuto da qualcuno esperto per questa implementazione.

Grazie mille,

un saluto,

Riccardo
 
Discussioni simili
Autore Titolo Forum Risposte Data
D Javascript per il download dei dati Javascript 0
B javascript per problemi con pdf e Safari Javascript 0
F Convertire JavaScript per la compatibilità nei browser obsoleti Javascript 0
M Errore JavaScript per php [objeto HTMLParagraphElement] PHP 0
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
alexice51 proggrammi per scrivere in javascript? Javascript 3
K [javascript] Tecnica per rilevare celle contenenti caratteri ricevute in dinamico Javascript 1
D [Javascript] pulsanti per comandi shell con php e ajax Ajax 7
K Come eliminare attributi regex per validazione con javascript Javascript 0
W [Javascript] Banner per accettazione cookies Javascript 4
I [Javascript] Leggere "var" da file .js esterno (per google map) Javascript 6
V Ciclo for per Pulsante in JavaScript Javascript 7
J [OFFRO][RETRIBUITO] Datafit Italia - Sviluppatori Javascript - per produttori di dispositivi mobile Offerte e Richieste di Lavoro e/o Collaborazione 0
T [Javascript] funzione per attivare analytics... dov'è l'errore? Javascript 14
L [javascript]problema funzione per webapi Javascript 4
MarcoGrazia [Javascript] Regex per la validazione di un numero di telefono. Javascript 2
D [Javascript] [HTML] Countdown su Mobirise di 24 ore relative per ogni utente. Javascript 4
K [javascript] Aiuto per programma subnetting Javascript 0
elpirata [Javascript] Redirect condizionale per link a pagine Javascript 2
D [Javascript] Automazione Wordpress CF7 per Teamup Calendar (tramite api) Javascript 1
N [Javascript] script demo preloader per video Javascript 0
A Funzione javascript per effettuare la slide del carosello in avanti Javascript 0
A [Javascript] [CSS] elenco affiancato per evitare scorrimento pagina Javascript 4
P [Javascript] Una dritta per ricavare una variabile Javascript 0
L [Javascript] Cliccare su mi piace per accedere a vedere la pagina Javascript 0
P [Javascript] Aiuto per recupero variabili da script Javascript 10
S [Javascript] Creare mappa per ogni utente Javascript 5
D javascript per select condizionali Javascript 1
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
R Javascript e html - estrazione EXIF da jpg con link per geolocalizzazione google maps Javascript 0
A [CERCO] cerco esperto di codici HTML e JavaScript per lavorare ad 1 applicazione Offerte e Richieste di Lavoro e/o Collaborazione 1
otto9due get_browser per sapere dettagli sullo stato del javascript del browser utente PHP 7
G Update file con javascript per controllo estensioni Javascript 5
S Consigli per script javascript per creare videogiochi Javascript 2
F Domanda per javascript Javascript 0
J Aiuto per capire javascript Javascript 0
S Chat per app in javascript Sviluppo app per iOS 7
S un aiuto per javascript e joomla Javascript 2
P Creare javascript onmouseout per menu Javascript 9
K Javascript codice per facebook Javascript 1
C Utilizzo di YUI Compressor e di Gzip per script html/javascript HTML e CSS 1
C File html con procedure javascript per creare effetto libro da sfogliare Javascript 9
C Javascript completo di html per creare una tabella dove compare il saluto in base all'ora. Javascript 2
G funzione javascript per passaggio valori Javascript 1
S javascript per apertura pagina Javascript 0
M [Offro] Supporto per PHP, Javascript, Mysql Offerte e Richieste di Lavoro e/o Collaborazione 0
F Svantaggi del codice Javascript per disabiltare la selezione del testo? Javascript 1
M JavaScript: lanciare funzione ASP per salvare dati in database Javascript 0
U CODICE per una pagina con contenuti dinamici usando javascript Javascript 4
M Javascript per redirect in nuova finestra a sito esterno Javascript 2

Discussioni simili