OnClickOut? [Résolu]

lesdis 401 Messages postés mercredi 19 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 28 déc. 2006 à 17:50 - Dernière réponse : FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention
- 2 janv. 2007 à 11:13
Bonjour,

Je viens de nouveau demander de l'aide à la communauté C-S après avoir passer une partie de mon apres-midi a chercher une solution en vain...

J'explique :
Sur un page il y a un tableau et j'aimerais lancer une fonction dès que l'utilisateur clique n'importe où sur la page sauf sur mon tableau...

Probleme :
- le onClick sur le body s'effectue tout le temps...
- le onBlur ne s'applique pas à un tableau...

Je recherche donc un évènement completement opposé à onClick d'une facon simple. Personellement je pensais recuperer les coordonnées de mon tableau ainsi que celle de ma souris lors du click sur le body pour verifier mais je prefere demander si quelqu'un aurait une astuce beaucoup plus simple (et plus pro )

Merci d'avance et passez de bonnes fêtes

PS: si la solution se cache déjà sur ce forum, mea culpa
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 28 déc. 2006 à 18:27
3
Merci
B
onjour...
il te faut récupérer l'objet qui à déclenché l'événement onclick...

//---------------------
function Get_Onclick(e){
  var Obj;
  //-- On récupère l'objet événement 
  if( !e) e = event;
  //-- On récupère le déclencheur 
  if( e.target)
    Obj= e.target;
  else
    Obj = e.srcElement;
  //-- On cherche le parent 
  // dans une table il y a fort à parier
  // que le TD soit déclencheur
  while(Obj.parentNode){
    Obj= Obj.parentNode;
    //-- Si c'est une TABLE
    if( Obj.tagName =="TABLE") return( false);
    //-- Ou encore par l'ID 
    if( Obj.id =="LA_TABLE") return( false);
  }
  //-- Laisse faire les choses 
  return( true);
}
avec un appel
document.onclick=Get_Onclick;

cela devrait fonctionner...
;0)

Merci PetoleTeam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 29 déc. 2006 à 06:03
3
Merci
Bonjour,

>>...lancer une fonction dès que l'utilisateur clique n'importe
>>...où sur la page sauf sur mon tableau...

<script type= "text/javascript">
 var quoi=false;
</script>
 ----

     un,
     deux,
 

on pouvait utiliser cancelbubble, mais c'est exclusif IE... je crois...

<hr />
            Cordialement       Bul       [

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_bultez
FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention - 28 déc. 2006 à 19:22
0
Merci
Moi je ferais pas comme cela...
Je propose une solution basée sur document.onclick
Tu crées un array (document.onClickOut) et à chaque fois que tu veux enregister un objet HTML à onClickOut tu l'ajoutes à l'Array.

Sur document.onmousemove tu récupère la position de la souris et tu la sauvegarde au moyen d'une varibable globale "window.mouse" de type {"x":0,"y":0}

Sur document.onclick tu fais une itération sur document.onClickOut et tu regardes, pour chaque element, si la souris est bien endehors de l'élément, si oui, tu call (document.onClickOut[i].onclickout(event))

Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
Commenter la réponse de FREMYCOMPANY
lesdis 401 Messages postés mercredi 19 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 2 janv. 2007 à 10:11
0
Merci
Merci à vous trois pour m'avoir apporter des solutions à mon probleme.

Fremy, j'espere que tu ne m'en voudras pas, mais je n'ai pas essayé ta solution, car je ne voulait pas passer par les coordonnées de ma souris. Malgré tout, ta solution devrait fonctionnner.

Merci Bultez et Petole, je ne sais pas encore quelle solution j'intègrerais a mon projet, mais les deux fonctionnent

Je vous souhaite une très bonne année à tous
Commenter la réponse de lesdis
FREMYCOMPANY 278 Messages postés jeudi 12 janvier 2006Date d'inscription 22 décembre 2008 Dernière intervention - 2 janv. 2007 à 11:13
0
Merci
Hello !
Personnellement, j'aime bien la solution de bultez qui évite du travail inutile au CPU et qui est en fait assez simple à mettre en oeuvre !

Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
Commenter la réponse de FREMYCOMPANY

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.