Envoyé par : vivelapsp
Date : 25/05/2009 16:46
Bonjour à tous,
Je souhaiterais détecter la perte ou le gain du focus sur le navigateur firefox, pour voir quand est ce qu'une fenetre est ouverte par desuss, que le navigateur est minimisé, agrandi, etc.
J'ai essayer avec ca :
window.addEventListener("blur", function() { mon_instruction; }, true); window.addEventListener("focus", function() { mon_instructio2; }, true);
Seulement le focus semble etre toujours perdu puis regagner un nombre de fois impressionnant. Par exemple lors du changement d'onglet, je ne devrais pas avoir un changement de focus. Pour le changement de fenetre, il me détecte un nombre de gain et de perte impressionnant...
Bref, avez vous une solution pour qu'a chaque perte ou gain de focus d'une fenetre je puisse lancer du code ?
Merci d'avance pour vos réponses
Envoyé par : laurentj
Date : 26/05/2009 15:52
Bonjour,
il faut déjà que dans tes listeners, tu prennes en compte le noeud cible. N'oublie pas que les evenements DOM sont propagés sur tout les parents de l'element conçerné par l'evenement. Donc le document recoit tout les evenements qui sont propagés dans le document. Et certains evenements sont propagés aussi sur la fenêtre, comme blur, focus, load... Autrement dit, ici, tu te manges par exemple tout les focus et blur de tout les elements XUL de l'interface de Firefox.
Donc pour trier ça, faut déjà que tu test le target de l'evenement, savoir si le target c'est bien ta fenetre quoi (ou le document).
Envoyé par : vivelapsp
Date : 27/05/2009 09:08
Bonjour et tout d'abord merci pour ta réponse
Je comprends bien le probleme maintenant, mais ne sais pas du tout comment tester tout ca...une piste / solution a me proposer ?
Envoyé par : laurentj
Date : 29/05/2009 11:26
Sur l'objet event que tu recois dans un listener, tu as un certain nombre de propriété, dont target, qui contient l'element qui est la cible de l'evenement.
Bref, c'est ce qu'il y a de plus trivial quand on fait du dev web javascript et DOM.. Tu trouveras plein de documentation à ce sujet sur le web.
Envoyé par : vivelapsp
Date : 04/06/2009 09:43
Désolé pour le temps de réponse je bossais parallelement sur d'autres choses. Bon, j'ai fais ce que tu m'a dit, y'a du mieux, mais c'est loin d'etre parfait...
window.addEventListener("blur", function(event) { if(event.target == window) { mon_instruction; } }, true); window.addEventListener("focus", function(event) { if(event.target == window) { mon_instruction; } }, true);
Des gains de focus lors des acces a la barre d'adresse, de fermeture d'onglet, apparaissent alors que je ne le voudrais pas, mais pour ce que je veux faire, ce n'est pas tres important. Mieux vaut trop de détection de gain que pas assez.
L'important est d'avoir la détection parfaite d'une perte de focus. Et la c'est pas gagné... Cela ne fonctionne que dans tres peu de cas, quand je ne suis pas sur le premier onglet que je bascule sur une autre fenetre par exemple. Mais dans presque tous (tous ?) les autres cas, la perte de focus n'est pas détectée... (reduction de fenetre, ouverture d'un programme / dossier par dessus etc.)
A noter que si je remplace 'window' par 'document', c'est pire, et ce logiquement puisqu'il prend en compte le document (page) visité.
C'est tres important que je puisse faire cette détection, d'autres idées ?
Merci d'avance à ceux qui essayerons de me venir en aide !
Envoyé par : vivelapsp
Date : 09/06/2009 10:07
J'ai vraiment besoin de cette détection... Personne n'a de solutions ??
J'ai "découvert" qu'en faite le blur était détecté que sur la barre d'url...pourtant la verification que je fait se fait bien sur window comme vous pouvez le voir ci dessus ! Et cela fonctionne bien avec le focus.
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.