37 votes

XmlHttpRequest onprogress interval

J'utilise XmlHttpRequests pour télécharger des images sur un serveur et je voudrais montrer à l'utilisateur la progression de ces téléchargements.

Malheureusement, l'intervalle entre les appels à mon gestionnaire d'événement onprogress est trop long. Généralement, onprogress n'est appelé qu'une ou deux fois pour une image de 500k.

Voici mon code:

 /* This function is not called often enough */
function progress(e){
    console.log('Uploading: ' + Math.round((e.loaded / e.total) * 100) + ' %');
}

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', progress, false);
xhr.send(data);
 

Ce comportement peut-il être modifié ou est-ce codé en dur quelque part dans l'implémentation du navigateur?

33voto

Matt Bierner Points 1076

Le W3c définit les lignes directrices suivantes dans leur XMLHttpRequest Niveau 2 du document. Évidemment, les divers niveaux de la conformité entre les navigateurs sont à prévoir.

Téléchargements:

Alors que la demande du corps de l'entité est en cours de téléchargement et le téléchargement complet du pavillon est faux, la file d'attente d'une tâche à l'incendie d'un progrès de l'événement nommé progrès à la XMLHttpRequestUpload objet sur toutes les 50ms ou pour chaque octet transmis, selon la valeur qui est la moins fréquente. - W3 XMLHttpRequest Niveau 2 (en Gras pour mettre l'accent)

Téléchargements:

Quand il est dit de faire des notifications de progression, tandis que la progression du téléchargement, de la file d'attente d'une tâche à l'incendie d'un progrès de l'événement nommé progrès sur toutes les 50ms ou pour chaque octet reçu, selon la valeur qui est la moins fréquente. - W3 XMLHttpRequest Niveau 2 (en Gras pour mettre l'accent)

Je ne suis pas au courant d'une api pour personnaliser cette fonctionnalité.

3voto

user574535 Points 81

Veillez également à ce que les proxys HTTP de débogage local (comme Charles, par exemple) aient tendance à affecter l'intervalle de déclenchement des événements de progression.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X