XmlHttpRequest onprogress-Intervall
Ich bin mit XmlHttpRequests Bilder hochladen auf einen server, und ich möchte zeigen dem Benutzer den Fortschritt der diese uploads.
Leider das Intervall zwischen den anrufen zu meinem onprogress-event-handler ist zu groß. In der Regel onprogress aufgerufen wird, nur einmal oder zweimal für 500k Bild.
Hier ist mein 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);
Kann dieses Verhalten geändert werden, oder ist das hardcoded irgendwo in der browser-Implementierung?
Wie wäre es damit? Wie man den Fortschritt von XMLHttpRequest
Mein problem ist nicht immer der Fortschritt. Mein problem ist, wie oft mein event-handler aufgerufen wird. Ich habe aktualisiert, meine Frage zu klären.
Mir ist klar, dass, jedoch ist der thread von mir gepostet hat sich eine Menge Beispiele von verschiedene Möglichkeiten
Ich habe es noch nicht getestet, aber es ist ein jQuery-plugin verwendet die PHP uploadprogress Modul, das zeigt den Fortschritt als gut. Vielleicht hilft es: nixboxdesigns.com/demos/jquery-uploadprogress.php. Ich denke, es wird ein wenig kompliziert, aber es könnte einen Versuch Wert sein.
Welche Browser hast du getestet?
Mein problem ist nicht immer der Fortschritt. Mein problem ist, wie oft mein event-handler aufgerufen wird. Ich habe aktualisiert, meine Frage zu klären.
Mir ist klar, dass, jedoch ist der thread von mir gepostet hat sich eine Menge Beispiele von verschiedene Möglichkeiten
Ich habe es noch nicht getestet, aber es ist ein jQuery-plugin verwendet die PHP uploadprogress Modul, das zeigt den Fortschritt als gut. Vielleicht hilft es: nixboxdesigns.com/demos/jquery-uploadprogress.php. Ich denke, es wird ein wenig kompliziert, aber es könnte einen Versuch Wert sein.
Welche Browser hast du getestet?
InformationsquelleAutor Oscar | 2011-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den W3 legt die folgenden Richtlinien in Ihrer XMLHttpRequest Level 2 Dokument. Offensichtlich unterschiedlichen Ebenen der übereinstimmung zwischen den Browsern sind nicht zu erwarten.
Uploads:
Downloads:
Ich bin mir nicht bewusst eine api für diese Funktionalität anpassen.
Er versucht es in 3 verschiedenen Browsern, scheint es, dass das progress-Ereignis wird nicht ausgelöst, bis atleast 69 bytes Daten wurden vom server empfangen. Nach, dass, es kann ausgelöst werden mit jedem zusätzlichen byte. Es scheint, wie die Browser Verhalten sich nach dieser Norm, sondern erst nach Erhalt der ersten 69 bytes.
Das ist gut zu wissen! Ich habe schon nervenaufreibenden mein Gehirn versucht herauszufinden, warum mein 10, 9, 8, ... countdown test ist nicht brennen, keine Fortschritte-Indikatoren, bis Sie völlig fertig!
Hmm, leider auch wenn ich senden 100 bytes und dann ein byte pro Sekunde für 10 Sekunden, ich noch nicht bekommen, keine Fortschritte-Indikatoren, bis alles übertragen wurde!
OK, da testen, die in den letzten paar Wochen, es scheint, dass Chrome hat sich verändert Verhalten und verlangt jetzt 1024 bytes. Ich hab eingestellt, dass die Skript, so dass Sie sehen können, wenn Ihr browser löst bei 69 oder 1024.
InformationsquelleAutor Matt Bierner
Auch darauf achten, dass die lokalen Debuggen von HTTP-Proxys (wie Charles, zum Beispiel) neigen dazu, zu beeinflussen progress-Ereignisse feuern Intervall.
InformationsquelleAutor user574535