Frage

Ich arbeite an einer jQuery-Plugin, das die Menschen in ihrer eigenen Seite enthalten. Das Plugin laicht Jobs auf einen Service, den ich bin Betrieb, der auf einer anderen Domäne ist.

die Domänengrenze zu durchbrechen ich jQuery JSONP Funktionalität verwenden, die zum Laichen des Jobs gut funktioniert. Ich brauche aber auch den „Fortschritt“ angezeigt wird (0 -> 100%). Bisher war mein Plan, um kontinuierlich „Umfrage“ für den Fortschritt des Auftrags (Komet wäre schöner, aber AFAIK ist nicht möglich, Cross-Domain).

Das Problem, dass die Abfrage für den Fortschritt ist jeder zweite Firefox verursacht ständig blinkt „Loading ...“ in den Titel der Registerkarte, die ich ernsthaft ärgerlich finden. (Firefox tut das, weil JSONP funktioniert durch Script-Tags an das DOM angebracht ist, die es dann „Lasten“).

So das Fleisch meiner Frage ist:

Ist es möglich, das „Loading ...“ Tab-Reiter Nachrichten surpress - oder - gibt es einen besseren Weg, die Fortschritte Updates in einer domänenübergreifende Art und Weise zu „Strom“

- Felix Geisendörfer

War es hilfreich?

Lösung

Wenn es ein langer Lauf Job, vielleicht können Sie einige durchschnittlichen Laufzeiten bekommen und gefälschtes es für den Benutzer, selten Polling Ihrer gefälschten Prozent abgeschlossen anzupassen.

Sagen ein durchschnittlicher Job 10 Minuten dauert. Sie können Figur, wie viele Prozent sollte jede Sekunde im Durchschnitt getan werden, und gefälschte aktualisieren, die Menge vollständig auf der Client-Seite.

Dann, wenn IhrFormal 30 Sekunden Timer abläuft, abfragen, um den Server die tatsächlichen Prozent abgeschlossen zu erhalten, und aktualisieren Sie die Geschwindigkeit Ihrer Fortschrittsbalken, so dass die Fälschung auf der Client-Seite auf die neue geschätzte Zeit von dem Server Job beenden wird.

Sie können etwas Mathematik tun, einen Mittelweg zwischen der Durchschnittsleistung und der Zeit, die Sie messen sind zur Zeit zu finden, aber das hängt von der Variabilität der Zeit, den Job auszuführen.

Andere Tipps

Leider wird der Ajax-Aufruf nur zurückkehren, sobald es abgeschlossen ist, so gibt es keine Möglichkeit, es zu haben, aktualisieren Sie über die Fortschritte.

würde ich empfehlen, einen mit Laden Spinnern oder so etwas.

Wenn es eine absolute Notwendigkeit ist präzisen Ladefortschritt zu zeigen, können Sie es aus einem anderen Blickwinkel nähern müssen.

CORS Unterstützung ist immer ziemlich weit verbreitet heutzutage. Sie könnten jetzt das Problem richtig lösen, indem CORS auf OK Cross-Domain-XMLHttpRequests verwenden und es ist trivial einen Mangel an CORS Unterstützung zu erkennen und zurück zu JSONP für älteren Browser fallen.

Es gibt beispielsweise Erkennungscode an diesem ersten Link, detaillierte Informationen darüber, wie es funktioniert auf MDC , und, wenn Sie Informationen zu Browser-Kompatibilität möchten, aktualisiert ich Wikipedia-Artikel vor ein paar Tagen.

Der Kern ist:

  • Jeder moderner WebKit-Browser (Safari 4+, Chrome 3+, neuer Herd, etc.)
  • Alles, was Gecko 1.9.1+ (Firefox 3.5+, SeaMonkey 2.0 + usw.)
  • Internet Explorer 8+ und alles, was auf sie basiert (Sleipnir, etc.) ... mit dem Vorbehalt, dass es nicht die Flagge nicht implementiert Anmeldeinformationen und Cookies mit der Bitte übergeben.

Die bemerkenswerten Ausnahmen sind:

  • Opera (keine Unterstützung ab 10.61)
  • Camino (2.0.5 basiert auf Gecko 1.9.0 (Firefox 3.0))
  • Arora (Stand Arora 0.10.2, hat es die API, aber ein Fehler verursacht Anfragen zum Scheitern verurteilt)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top