2010-10-20 11 views
0

Salut tout le monde Je travaille sur un chat Web Ajax et cette application est mise à jour en utilisant des requêtes Ajax expiré toutes les quelques secondes. L'utilisation de requêtes Ajax chronométrées signifie que le serveur Web doit faire face à une charge très lourde et je souhaite réduire autant que possible le nombre de requêtes.Détecter les utilisateurs hors de la vue du navigateur

Étant donné que le délai d'attente est déclenchée dans le navigateur je voudrais savoir ceci:

Est-il possible d'utiliser JavaScript pour détecter les utilisateurs qui sont en vue du navigateur afin que je puisse effacer le délai d'attente pour leur mise à jour de chat?

+1

Essayez de regarder soi-disant solutions « Comet », qui utilisent des connexions longue durée de vie qui poussent des données au client au lieu du client tirant les données du serveur. – janmoesen

+0

@janmoesen +1 - Merci, je le ferai. –

Répondre

2

Oui, pour Gecko et les navigateurs WebKit vous pouvez utiliser l'événement onblur de l'objet window global:

window.onblur = function(e) { 
    //clear timeout here... 
}; 

Pour IE cependant, vous devez utiliser l'événement onfocusout.

+0

Merci pour la réponse, cet événement fonctionne-t-il dans tous/la plupart des navigateurs? –

1

Vous pouvez vérifier si la « boîte de chat » a mise au point avec

document.activeElement 
+0

+1, Cela peut également fonctionner, mais un utilisateur peut perdre le focus de la "boîte de discussion" tout en regardant la fenêtre. –

Questions connexes