Bonjour,
je travaille actuellement sur une application riche, celle ci faisant régulièrement une requête sur le serveur à intervalle régulier, je souhaiterais vérifier que l'onglet du navigateur qu'utilise l'utilisateur est bien celui de mon application. Si l'onglet est actif la requête asynchrone se fait toutes les 3 seconde, si ce n'est pas le cas, toutes les 10-15 secondes, afin d'économiser les ressources du serveurs, ou d'éviter qu'un utilisateur sature le serveur en ayant plusieurs onglets ouvert vers mon application.
Donc voici mon script en javascript :
Au démarage, chrome ne lance pas d'évènement focus, forcer le passage avec window.focus() ne fonctionne pas.
Sous firefox et IE, l'évènement blur ne se déclenche qu'en sortant de la fenêtre pas en changeant d'onglet. Sous opéra et chrome, ça passe.
Dans le else si je remplace window.onfocus par document.onfocus, et idem pour l'évènement blur, j'ai le comportement désiré dans firefox et opera (le blur au changement d'onglet), mais tout déraille sous chrome.
Pour IE je n'ai rien qui marche vraiment comme souhaité.
Quelqu'un aurait-il déjà été confronté à ce genre de problème, et aurait-il trouver une solution ?
Merci d'avance pour votre aide et toute optimisation que je pourrais apporter à ce code.
je travaille actuellement sur une application riche, celle ci faisant régulièrement une requête sur le serveur à intervalle régulier, je souhaiterais vérifier que l'onglet du navigateur qu'utilise l'utilisateur est bien celui de mon application. Si l'onglet est actif la requête asynchrone se fait toutes les 3 seconde, si ce n'est pas le cas, toutes les 10-15 secondes, afin d'économiser les ressources du serveurs, ou d'éviter qu'un utilisateur sature le serveur en ayant plusieurs onglets ouvert vers mon application.
Donc voici mon script en javascript :
//cette fonction est appelé depuis l'element body avec l'attribut onload.
function focusMovie(){
window.focus(); //ceci ne marche pas sur chrome.
document.getElementById("website").focus(); //ceci donne le focus à un element embed ou object, contenant un fichier SWF.
var _isActive = false;
//cette fonction est appelé depuis mon SWF via ExternalInterface.
function isActive(){
return _isActive;
}
function onBlur() {
_isActive = false;
}
function onFocus(){
_isActive = true;
}
//on verifie qu'on est sous IE ou non.
if (/*@cc_on!@*/false) {
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
Au démarage, chrome ne lance pas d'évènement focus, forcer le passage avec window.focus() ne fonctionne pas.
Sous firefox et IE, l'évènement blur ne se déclenche qu'en sortant de la fenêtre pas en changeant d'onglet. Sous opéra et chrome, ça passe.
Dans le else si je remplace window.onfocus par document.onfocus, et idem pour l'évènement blur, j'ai le comportement désiré dans firefox et opera (le blur au changement d'onglet), mais tout déraille sous chrome.
Pour IE je n'ai rien qui marche vraiment comme souhaité.
Quelqu'un aurait-il déjà été confronté à ce genre de problème, et aurait-il trouver une solution ?
Merci d'avance pour votre aide et toute optimisation que je pourrais apporter à ce code.