IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Info-bulle


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut Info-bulle
    Bonjour,

    mon code javascript pour afficher l'info-bulle est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // Variables globales
    var ma_bulle;
    var netscape = "t";
     
    // Detection du passage de la souris sur l'image
    function detect(span) {
    	ma_bulle = span;
    	// Autres que IE
    	if (navigator.appName != "Microsoft Internet Explorer") {
    		document.captureEvents(Event.MOUSEMOVE);
    	}
    	else
    		netscape = "f";
    	document.onmousemove = move;
    }
     
    function move(e) {
    	// IE
    	if (netscape == "f") {
    		document.getElementById(ma_bulle).style.left = event.x + document.body.scrollLeft+15;
    		document.getElementById(ma_bulle).style.top = event.y + document.body.scrollTop+15;
    		window.status = "x : "+event.x+", y : "+event.y;
    	}
    	// Autres
    	else {
    		document.getElementById(ma_bulle).style.left = e.pageX +15;
    		document.getElementById(ma_bulle).style.top = e.pageY+15;
    		window.status = "x:"+e.pageX+", y : "+e.pageY;
    	}
    }
    Le HTML qui va avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <table border="1" align="center">
    		<td>
    			<a href="#" class="bulle" onmouseover="detect('sp')">
    				mon texte 
    				<span id="sp">la bulle qui<br />va avec...</span>
    			</a>
    		</td>
    		<td>
    			<a href="#" class="bulle" onmouseover="detect('sp2')">
    				blabla
    				<span id="sp2">la bulle2 qui<br />va avec...</span>
    			</a>
    		</td>
    	</table>
    Mon problème est que ça ne fonctionne pas correctement sous Firefox.
    (Sous IE, ça fonctionne bien...)
    Il y a un grand décalage entre le pointeur de la souris et mon info-bulle
    Page test

    Auriez-vous des solutions ?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Bizarrement, en rajoutant la doctype, ça fonctionne un peu mieux...
    Mais l'info-bulle reste statique... Page

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Je ne peux que te conseiller le script de Torvalds:
    http://torvalds17.free.fr/partiePubl....php5?script=1 qui fonctionne. Inspire t'en pour trouver ton problème

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    il faut ABSOLUMENT mettre des px pour tes top et left,
    rajoutes les en faisant des +"px"
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Citation Envoyé par siddh
    salut,
    il faut ABSOLUMENT mettre des px pour tes top et left,
    rajoutes les en faisant des +"px"
    En rajoutant le px, c'est un peu mieux, l'info-bulle n'est plus statique, mais toujours décalée !

    Citation Envoyé par denisC
    Je ne peux que te conseiller le script de Torvalds:
    http://torvalds17.free.fr/partiePublique/informatique/scripts/index.php5?script=1 qui fonctionne. Inspire t'en pour trouver ton problème
    Oui, je l'ai fait, mais j'vois pas d'où vient mon problème...
    Si ce n'est le JS, ça vient surement du CSS. J'vais fouillé de ce côté là.

    Merci.

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    en mettant juste ça dans move :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.getElementById(ma_bulle).style.left = parseInt(event.x + document.body.scrollLeft+15,10)+"px";
    		document.getElementById(ma_bulle).style.top = parseInt(event.y + document.body.scrollTop+15,10)+"px";
    		window.status = "x : "+event.x+", y : "+event.y;
    y a un ti reglage pour firefox a faire
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Citation Envoyé par siddh
    en mettant juste ça dans move :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.getElementById(ma_bulle).style.left = parseInt(event.x + document.body.scrollLeft+15,10)+"px";
    		document.getElementById(ma_bulle).style.top = parseInt(event.y + document.body.scrollTop+15,10)+"px";
    		window.status = "x : "+event.x+", y : "+event.y;
    y a un ti reglage pour firefox a faire
    Ne fonctionne pas non plus
    D'ailleurs pour Firefox, ce n'est pas event.x (event.y), mais event.pageX (event.pageY).

    Merci pour ton aide!

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    en fait avec ton fonctionnement, il part toujours de ta case de tableau (surement a cause du :hover span) comme base de calcul
    du coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else {
     
          document.getElementById(ma_bulle).style.left = "20px";
          document.getElementById(ma_bulle).style.top = "20px";
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Invité
    Invité(e)
    Par défaut
    comme dit siddh, la bulle part des cases de ton tableau. c'est donc qu'elle herite du caractère relatif du positionnement de ta case de tableau. si tu enleves le position:relative de ton style "bulle", ça fonctionne

  10. #10
    Membre expérimenté
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Points : 1 309
    Points
    1 309
    Par défaut
    Citation Envoyé par torvalds17
    comme dit siddh, la bulle part des cases de ton tableau. c'est donc qu'elle herite du caractère relatif du positionnement de ta case de tableau. si tu enleves le position:relative de ton style "bulle", ça fonctionne
    Oui...

    Merci beaucoup !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Info-bulles ?
    Par Neilos dans le forum Windows
    Réponses: 3
    Dernier message: 05/09/2006, 15h21
  2. [C#] [Win forms] Info bulle sur bouton
    Par RobinJulie dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/11/2004, 16h12
  3. Info bulle sur un TImage
    Par Dauphin dans le forum C++Builder
    Réponses: 4
    Dernier message: 30/09/2004, 13h56
  4. [BPW] Programmation d'info-bulles
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 15/05/2004, 18h14
  5. Réponses: 3
    Dernier message: 11/03/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo