[javascript ] évènement onblur

Fermé
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 - Modifié par Lilouse64 le 5/05/2010 à 14:13
 Diony - 29 janv. 2011 à 19:28
Bonjour

J'ai un soucis avec un pop up et l'évènement onblur de mon body. Le principe de ce pop up est de remplir un formulaire ce trouvant dans la page appelante en cliquand sur une image. Je souhaite lorsque l'utilisateur clique hors de la page que cette fenêtre ce ferme. J'ai donc mis :
<body onblur="close();">


Ma fonction qui remplie mon formulaire contient aussi un close(); une fois que la fonction est exécuté.

Sur firefox, mon pop up fonctionne correctement, je n'ai absolument aucun soucis. Sur internet explorer par contre, lorsque je clique sur mon image, il considère que je perd le focus et fait le onblur directement.

De plus, en regardant sur ce site :
http://xhtml.qanuq.com/body.html
j'ai vu que l'attribut onblur est obsolète.

Par quoi es ce que je pourrais remplacer mon onblur pour que mon pop up puisse faire ce que je souhaite ?

Merci d'avance pour vos réponses.

1 réponse

Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 12
Modifié par Lilouse64 le 5/05/2010 à 15:58
J'ai trouvé une alternative qui ne marche toujours pas sur internet explorer. Au lieu de demander la fermeture sur un évènement de la fenêtre fille, je le fais sur un évènement de la fenêtre mère. J'exécute une fonction closefenetre suite à l'évènement d'un clique sur la fenêtre mère ou à la fermeture de la fenêtre. Il n'y a que le cas ou on clique complètement ailleur mais notre pop up sera fermé à un moment donné sans avoir un empilement de fenêtre.

Lorsque je clique sur le bouton qui me permet d'ouvrir le popup je me retrouve à d'abord exécuter la fonction qui me permet de l'ouvrir puis la fonction qui me permet de la fermer du coup le pop up se fermait et se rouvrait en suivant. J'ai donc ajouter une autre variable qui m'informe si on peux fermer ou pas le popup. cette variable est à true par défaut.

ma fonction d'ouverture :
function openfenetre(text,event){ 
  
 //s'il y avait déja un pop up on le ferme 
 if(popup){ 
  popup.close(); 
 } 
  
 // on ouvre le pop up 
 var e=event; 
 var dleft=e.screenX; 
 var dtop=e.screenY-(140/2); 
 popup=open("fenetre.php?text=" + text,"couleurs" ,"top=" + dtop + ", left=" + dleft + ", height=140, width=140, directories=no, menubar=no, status=no, scrollbars=no, location=no, resizable=no"); 

 // on interdit la fermeture lors de l'execution de la fonction de fermeture qui suit qui suit 
 touchepopup=false; 
  
}


ma fonction de fermeture :
// fermer le popup
function closefenetre(){
// es ce qu'il y a un pop up
if (popup){
// es ce qu'on a le droit de le fermer
if(touchepopup){
popup.close();
}
}

// on prend le droit de le fermer pour la fois suivante
touchepopup=true;
}

Sur firefox je n'ai aucun soucis, le problème vient encore de internet explorer.
J'ai trois cas et un seul me pose problème :
- fermer lors de la fermeture de la page mère -> ok
- fermer lors d'un clique sur le bouton d'ouverture -> ok (avec l'ouverture de la fenêtre suivante qui fonctionne aussi)
- fermer lors d'un clique sur la page autre que sur le bouton -> ne fonctionne pas

EDIT : en faite quand on clique sur un des éléments qui compose la page (même si c'est juste du texte, ça marche aussi mais pas quand on clique dans un endroit complètement vide.
0
onBlur ne fonctionne pas bien sous IE mais onFocus marche bien.
En reprenant ton idée, il est plus simple de faire :
<body onFocus="closepopup();">
avec
function closepopup() {
if(popup) popup.close();
}
Comme ça, pas besoin de gérer plusieurs flags, ni d'appeler du javascript à plusieurs endroits: dès qu'on clique sur la fenêtre principale, le popup est fermé.
Cerise sur le gateau,: ça marche même si le popup est déjà fermé (window.close dans le popup). Je pensais que javascript ralerait qu'on lui demande de fermer une fenêtre qui n'existe plus, mais non !
0