Domanda

Sto lavorando ad un plugin jQuery che le persone possono includere nella propria pagina. Il plugin viene distribuito su processi a un servizio che sto operando, che è in un dominio diverso.

Per violare il confine del dominio che sto usando la funzionalità di jQuery JSONP che funziona bene per la deposizione delle uova il lavoro. Tuttavia, ho anche bisogno di visualizzare il "progresso" (0 -> 100%). Finora il mio piano era quello di continuo "sondaggio" per il progresso del lavoro (la cometa sarebbe più bello, ma per quanto ne so non è possibile cross-domain).

Il problema è che il polling per il progresso ogni secondo fa sì che Firefox a lampeggiare costantemente "Loading ..." all'interno del titolo della scheda che trovo seriamente fastidioso. (Firefox fa perché JSONP opera attraverso tag script di essere attaccato al DOM che poi "carichi").

Quindi, la carne della mia domanda è:

E 'possibile allo scopo di sopprimere la "Loading ..." messaggi titolo della scheda - o -? C'è un modo migliore per "stream" gli aggiornamenti sui progressi in modo cross-domain

- Felix Geisendörfer

È stato utile?

Soluzione

Se si tratta di un lavoro lungo in esecuzione, forse è possibile ottenere alcuni media i tempi di esecuzione e falso per l'utente, utilizzando polling infrequente per regolare la vostra per cento falso completo.

Di 'un lavoro dura in media una decina di minuti. Si può capire quale percentuale dovrebbe essere fatto ogni secondo, in media, e l'aggiornamento falso che importo interamente sul lato client.

Poi, quando il vostro trentiduesima scada il tempo, interrogare il server per ottenere la percentuale effettiva completa, e aggiornare il tasso della vostra barra di avanzamento in modo che il falso sul lato client si concluderà presso il nuovo orario finitura del lavoro del server.

Si può fare un po 'di matematica per trovare una via di mezzo tra il rendimento medio e il tempo che si sta misurando, ma che dipende dalla variabilità del tempo per eseguire il lavoro.

Altri suggerimenti

Purtroppo, la chiamata ajax tornerà solo dopo aver completato, quindi non c'è modo di farlo che si aggiorna sui progressi.

Ti consiglio di utilizzare un carico filatore o qualcosa del genere.

Se si tratta di un requisito assoluto per mostrare preciso avanzamento del caricamento, potrebbe essere necessario avvicinarsi da una diversa angolazione.

CORS supporto è sempre piuttosto diffusa questi giorni. Si potrebbe ora risolvere il problema correttamente utilizzando CORS a OK XMLHttpRequests tra domini ed è banale per rilevare una mancanza di supporto CORS e ricadere a JSONP per browser meno recenti.

Non c'è esempio di codice di rilevamento su quel primo link, in modo approfondito i dettagli su come funziona su MDC , e, se si desidera che i dettagli sulla compatibilità del browser, ho aggiornato Wikipedia articolo pochi giorni fa.

L'essenza di esso è:

  • Ogni moderno browser WebKit (Safari 4+, Chrome 3+, nuovo Flock, ecc.)
  • Tutto Gecko 1.9.1+ (Firefox 3.5+, SeaMonkey 2.0 +, ecc.)
  • Internet Explorer 8+ e tutto basato su di esso (Sleipnir, etc.) ... con l'avvertenza che essa non implementa il flag per passare le credenziali ed i biscotti con la richiesta.

Le eccezioni degne di nota sono:

  • Opera (nessun supporto a partire da 10.61)
  • Camino (2.0.5 è basato su Gecko 1.9.0 (Firefox 3.0))
  • Arora (A partire dal Arora 0.10.2, ha l'API, ma un bug fa sì che le richieste di fallire)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top