2009-08-08 9 views
5

Abbiamo una richiesta Ajax che richiede ca. 30 secondi e quindi invia l'utente a una pagina diversa. Durante questo periodo, ovviamente mostriamo un indicatore di spin ajaxy, ma il browser può anche "apparire" bloccato perché il client del browser non funziona o mostra il proprio messaggio di caricamento.Browser "Busy State" con Ajax

C'è un modo semplice per dire a tutti i principali browser di essere occupato con un comando JS?

Grazie, Chad

risposta

2

Hai bisogno di usare AJAX in questa situazione? Potresti invece postare/inserire in un'altra pagina il cui unico scopo è elaborare la richiesta e una volta terminato il reindirizzamento alla pagina di destinazione?

Si può ancora usare un po 'di JS per far scattare la casella di selezione, e dal momento che si sta postando in un'altra pagina, il brower visualizzerà il suo "indicatore di occupato nativo". Il browser non dovrebbe mai mostrare la pagina centrale, una volta che la richiesta è stata elaborata, la risposta viene reindirizzata alla destinazione.

+0

Fresco - sì, questo potrebbe essere il modo migliore per ottenere l'indicatore nativo - in realtà farlo funzionare attraverso un post. Grazie Cambierò qualcosa in giro. – Chad

0

jquery?

$('html').ajaxStart(function() { $('#busyindicator').show(); }); 
$('html').ajaxStop(function() { $('#busyindicator').hide(); }); 

Ma forse non sto capendo la tua domanda. cosa significa "sembra occupato"? Vuoi dire di attivare la barra di avanzamento del browser o l'indicatore di occupato nativo? Non pensare di poterlo fare ...

+1

Mi sembra che stia già facendo qualcosa di simile e ne desideri di più, ad esempio come hai descritto impostando l'indicatore di occupato nativo del browser. – Josh

+0

Grazie Scott! Scusa se non sono stato chiaro. Sì usando Ajax e proverò la soluzione post. – Chad

2

È possibile impostare la proprietà CSS cursor di body in "attesa". Con questo prototipo sarebbe come:

$(document.body).setStyle({cursor: 'wait'}); 

Io credo questo è il codice jQuery, per favore qualcuno mi corregga se sbaglio, come io non sono un esperto di jQuery:

$("body").css("cursor", "wait"); 

Questa volontà fai in modo che l'intera pagina mostri un cursore del mouse a forma di clessidra su Windows e un cursore rotante di orologio su Mac OS.

+0

Questa è anche una buona idea .... sarebbe una rapida alternativa alla pubblicazione effettiva della richiesta per ottenere il vero indicatore nativo. Grazie Josh. – Chad

+0

Questo è buono ma non abbastanza buono. L'icona della scheda Chrome non indica che l'app è occupata. – sureshvv