2009-08-08 14 views
5

Tenemos una solicitud de AJAX que tarda aprox. 30 segundos y luego envía al usuario a una página diferente. Durante ese tiempo, por supuesto, mostramos un indicador de ajaxy spinner, pero el navegador también puede "aparecer" atascado porque el cliente del navegador no está funcionando o mostrando su propio mensaje de carga."Estado de ocupado" del navegador con Ajax

¿Hay alguna manera fácil de decirle a todos los principales navegadores que estén ocupados con un comando JS?

Gracias, Chad

Respuesta

2

¿Necesitas usar AJAX en esta situación? ¿Podría en su lugar publicar/poner en otra página cuyo único propósito es procesar la solicitud y una vez que termine de redirigir a la página de destino?

Aún puede usar algunos JS para hacer estallar la ruleta, y como está publicando en otra página, el navegador mostrará su "indicador de ocupado nativo". El navegador nunca debe mostrar la página intermedia, una vez que la solicitud ha sido procesada, la respuesta se redirecciona al destino.

+0

Cool - sí, esta puede ser la mejor manera de obtener el indicador nativo - en realidad hacerlo funcionar a través de una publicación. Gracias voy a cambiar algunas cosas. – Chad

0

jQuery?

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

Pero tal vez no entiendo su pregunta. ¿Qué significa "estar ocupado"? ¿Quiere decir que la barra de progreso del navegador o el indicador de ocupado nativo están activos? No creas que puedes hacer eso ...

+1

Me parece que ya está haciendo algo similar y quiere más, por ejemplo, como describió, configurando el indicador de ocupado nativo del navegador. – Josh

+0

Gracias Scott! Perdón por no ser claro. Sip usando Ajax e intentará la solución de publicación. – Chad

2

Puede establecer la propiedad CSS cursor de body para 'esperar'. Con prototipo de esto sería como:

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

Yo creo El código jQuery, por favor, que alguien me corrija si estoy equivocado, ya que no soy un experto en jQuery:

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

Esta voluntad haga que toda la página muestre un cursor de reloj de arena en Windows y un cursor giratorio en Mac OS.

+0

Ya esta es una buena idea también ... sería una alternativa rápida a la publicación de la solicitud para obtener el verdadero indicador nativo. Gracias Josh. – Chad

+0

Esto es bueno pero no lo suficientemente bueno. El icono de la pestaña cromada no indica que la aplicación esté ocupada. – sureshvv

Cuestiones relacionadas