2009-08-03 10 views
4

J'utilise la liaison XMLHTTPRequest pour recevoir des événements asynchrones du serveur. XHR ouvre un URI de serveur, puis se bloque jusqu'à ce qu'un événement arrive ou qu'un délai expire, dans tous les cas, JS déclenche un nouveau XHR sur le même URI immédiatement.Un moyen d'empêcher Safari et Chrome d'afficher l'animation de chargement pendant que XHR est actif?

Cela fonctionne très bien, mais il y a un problème ennuyeux dans Safari et Chrome: les deux continuent d'afficher une animation de "chargement de page" pendant que n'importe quel XHR est actif. Chromes va encore plus loin et continue d'animer le curseur, rendant ainsi l'application inutilisable.

Est-il possible de désactiver ce comportement? Je crois que cela est fait intentionnellement pour des raisons de sécurité, donc l'utilisateur peut toujours savoir si la page est en train de charger quelque chose. Pourtant, FF et IE traitent XHR différemment.

+0

Pouvez-vous poster le code que vous utilisez pour faire la demande (s)? – johnvey

Répondre

2

L'indicateur de chargement animé signifie que le chargement de la page est en cours. Cela peut arriver pour une série de XHR, démarrée directement à partir du gestionnaire d'événements window.onload(). Si ces appels XHR seront enveloppés dans l'appel setTimeout(), le chargement de la page sera terminé avec la liaison à l'écoute des événements asynchrones.

+0

Précisément. Je vous remercie! –

+0

Dans un UIWebView sur iPhone, la méthode setTimeout ne fonctionne que si le délai est suffisamment important (environ ~ 100 ms). Sinon, je reçois toujours le spinner :( –

0

Je pense que cela se produit pour la demande de synchronisation à un URI. Vous voulez souvent essayer une requête asynchrone. Je pense qu'ils sont traités différemment.

+0

merci, va l'essayer immédiatement –

+0

négatif. nous avons déjà utilisé xhr asynchrone. donc le problème est toujours là. –

+0

Positif! (N'a pas pu résister) Ne sais pas alors. Cela ne se produit pas lorsque vous utilisez d'autres frameworks tels que jQuery et Yahoo. En outre, si la page se bloque jusqu'à ce qu'un événement survienne ou qu'un délai d'expiration se produise, la fonctionnalité de synchronisation n'est pas synchrone. Je voudrais vérifier votre code pour vous assurer qu'il ne bloque pas la page, car c'est probablement ce qui provoque les signaux de chargement. –

Questions connexes