Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INFO-BULLE PERSONNALISABLE COMPATIBLE FIREFOX ET IE


Information sur la source

Catégorie :Effets Classé sous : info, bulle, infobulle, titre, title Niveau : Initié Date de création : 10/08/2005 Date de mise à jour : 25/03/2006 13:50:46 Vu / téléchargé: 32 401 / 5 402

Note :
9,21 / 10 - par 24 personnes
9,21 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (89)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Cette source affichera une bulle d'info (Un div caché) a proximité du curseur lorsque celui ci passera sur l'élément de votre choix.

La différence de ce script par rapport à d'autres présent ici même est sa complète compatibilité avec tous les navigateurs actuels (Firefox, Internet Explorer et Opera (Pas encore tester sous les autres, si quelqu'un pouvais le faire merci)).

De plus, vous pouvez insérer de l'HTML dans la bulle (image, texte en gras, ect...)

Pour contrer le bug de IE au scrolling de la page présent dans toute les sources que j'ai essayer, j'ai insérer un petit code de microsoft: document.body.scrollTop;

Voila que dire de plus, enjoy !

EDIT : Je laisse un exemple online, pour que vous ne soyer pas obliger de télécharger le zip pour voir le code en action:
http://mobman02.free.fr/nepassupprimer/info_bulle.html

Mobman02 ;)
 

Conclusion

Je ne vous montre pas la source parce qu'elle est commenté,
Vous pouvez maintenant mettre un Doctype sur les pages contenant cette source, le bug est corrigé.
Merci à TeDeum grâce à qui la source tient compte du mode quirck d'IE.


J'espère que cette source vous empêchera de passer la journée sur un bout de javascript ! (comme moi quoi...)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

10 août 2005 11:09:42 :
Mise a jour du zip, petite etourderie corriger.
15 août 2005 19:35:05 :
Optimisation en suivants les conseils de fg85 et Zart (merci ;) )
21 décembre 2005 11:09:02 :
En ajoutant une dtd, une contrainte de rigeur se mettais en place, les "petites fautes" n'étais donc plus corrigé et le script ne fonctionnait plus correctement. Quand dans le code on met : objet.style.top=position; Ca veut dire si position=50 que on donne un style top:50, oui mais 50 quoi ? Le navigateur n'en sait rien ! il faut donc que tu rajouter une unité de mesure pour que le code fonctionne avec la dtd comme par exemple : objet.style.top=position+"px"; Voila pour l'explication.
25 mars 2006 13:50:47 :
Prise en compte du mode quirck d'IE. (TeDeum) Ajout de la prise en compte du scroll horizontal. Correction de quelques fôtes d'orthographes :D Ajout d'une capture.

Commentaires et avis

signaler à un administrateur
Commentaire de FraGag le 10/08/2005 05:49:00

J'ai trouvé une petite erreur. Dans les attributs onmouseover, il ne faut pas mettre "javascript:" devant le script, seulement dans les cibles de liens hypertextes (<a href="javascript:mafonction();">). Ce que je trouve bizarre, c'est qu'il n'y a pas de "javascript:" dans les attributs onmouseout...

signaler à un administrateur
Commentaire de mobman02 le 10/08/2005 11:11:07

Oui effectivement tu as raison,
c'est une simple petite etourderi,
j'ai corriger mon zip, merci ;)

signaler à un administrateur
Commentaire de fg85 le 10/08/2005 11:15:00

Si tu veut optimiser un max ton script.
Créé une fonction :
function getid(id)
{
return document.getElementById(id);
}
Et remplace tout tes (exemple) :
window.document.getElementById("curseur").style.left=e.pageX + 5;
par :
getid("curseur").style.left=e.pageX + 5;

C'est beaucoup plus propre ;)
Cordialement
--------------------------------
http://fg.logiciel.free.fr

signaler à un administrateur
Commentaire de Zart le 15/08/2005 14:55:43

Je trouve cette source très cool...
Je la trouve même vraiment intéressante ! Je ne m'y connais pas trop en javascript. Mais c'est simple et efficace.
Moi je mets 10, je l'utilise pour mon projet, s'il y a du nouveau prévenez moi !

signaler à un administrateur
Commentaire de mobman02 le 15/08/2005 19:36:54

Voila j'ai mis a jour tout le javascript en suivant vos conseils,
je ne note pas de meilleurs perf, mais en tout cas, on est sûr que ca peu pas faire de mal ;)

Merci à vous.

PS : Un exemple est en ligne http://mobman02.free.fr/nepassupprimer/info_bulle.html

signaler à un administrateur
Commentaire de soleildoe le 22/08/2005 15:40:39

Salut! merci pour ce code , il m'a bien aidé, mais je voudrais savoir si au lieu d'afficher un texte que j'ai écris moi même, j'affiche un texte à partir d'un fichier texte !
@+

signaler à un administrateur
Commentaire de LiBe le 30/08/2005 19:38:12

Ben Hop une iframe en contenu de texte... (même si ce n'est pas génial point de vue compatibilité)

signaler à un administrateur
Commentaire de LiBe le 30/08/2005 19:39:19

...ah ça me revient... une div en contenu. Voilà la meilleure solution.

signaler à un administrateur
Commentaire de mailstef le 13/09/2005 16:16:35

Super ce script. j'ai cependant une question je voudrai que mon texte soit en fait dans une variable car je code en php mais j'ai de gros souci avec les ' les " et les blancs :
Comment je dois ecrire ma ligne pour que cela soit ok : ci dessous ca ne marche pas
Merci par avance

$variable = 'Mon texte';
$variable2 = 'Mon texte2';
echo "<th onmouseover='montre(<font color=blue>$variable</font>)'; onmouseout=cache();><font color=blue> $variable2 </font></th>";

signaler à un administrateur
Commentaire de mobman02 le 13/09/2005 19:47:01

$variable = 'Mon texte';
$variable2 = 'Mon texte2';
echo "<th onmouseover=\"montre('<font color=blue>".$variable."</font>');\" onmouseout=\"cache();\"><font color=blue>".$variable2."</font></th>";

Voila, en gros suffit de laisser comme d'hab, mais d'echapper les double quotes par des \, sauf autour de variables, car la les doubles quotes servent juste de concaténation.
(c'est pas obligatoire de concaténé quand on utilise ", mais moi je prefere :p)

signaler à un administrateur
Commentaire de mailstef le 14/09/2005 10:22:43

Merci pour cette réponse claire ! et bravo pour ce script

signaler à un administrateur
Commentaire de MarieMarie le 14/09/2005 17:14:43

Bonjour,
Je trouve ce script trés bien et j'en ai vraiment besoin, le précédent que j'utilisais ne marchait pas avec firefox, après mise en oeuvre cela marche trés bien avec firefox par contre avec IE il passe à la ligne dans l'info bulle après tous les mots.
Précisions :
- Si j'utilise la page html exemple tout va bien.
- Si je mets le code dans une de mes pages asp :  recopie du style, du script, et du div et recopie des exemples de la page info_bulle.html dans ma page, sur ces mêmes exemples qui marchaient bien dans la page originale,  il saute une ligne à tous les mots (avec IE, avec firefox tout va bien).
Quelque chose que j'ai du mal faire ?

Merci d'avance de votre aide,
Marie.

signaler à un administrateur
Commentaire de mobman02 le 14/09/2005 19:39:12

Heu alors la :S
Aucune idée du probléme... dsl,
tu peu verifier dans la source que le code contenu dans la variable de "montre()" ne contient rien d'anormal, ou encore essayer de donner une largeur fixe au div (rajoute width : 100px; au CSS)

Bonne chance ;)

signaler à un administrateur
Commentaire de MarieMarie le 15/09/2005 14:57:29

Effectivement en rajoutant une largeur dans le CSS cela fonctionne bien (j'avais essayé avant de donner une largeur directement au div et cela ne marche pas).
C'est un peu dommage parce que quand ça marche sans fixer la largeur l'info bulle se met en page toute seule en fonction du texte de la largeur de la fenêtre ..., alors que là elle est fixe.
Je comprends toujours pas pourquoi cela fait ça dans mes pages, mais c'est une solution de contournement acceptable en attendant d'avoir trouvé mieux.

Merci encore pour ce script.

signaler à un administrateur
Commentaire de laurent207 le 21/09/2005 13:33:57

C'est sympa ton code (clair, commenté et simple à mettre en oeuvre), mais g un prb :
sous IE 6 ou FireFox 1.0.6 l'info bulle apparait mais y'a rien dedant.

Aurai-tu une explication ?

signaler à un administrateur
Commentaire de mobman02 le 21/09/2005 15:43:06

Tu est sur d'avoir bien remplie comme ceci la balise
onmouseover="montre('TON TEXTE');" ?

Est-ce que la page d'exemple fonctionne chez toi ?

Est-ce que tu peu montrer ta source pour que je puisse t'aider ?

signaler à un administrateur
Commentaire de laurent207 le 21/09/2005 16:01:49

ça marche niquel, je vien de trouver à l'instant.
ct juste que j'avais mis dans la balise <body> text="#FFFFFF". Donc je ne voyait rien
L'info-bulle est jaune est le texte dedans je l'avais mis en jaune

lol.

Ton code est génial et rapide. Merci pour tout et désolé de t'avoir dérangé pour rien.

signaler à un administrateur
Commentaire de metis15 le 09/11/2005 13:44:08

Vouai, c'est bien ce code !!!
Bon, ça marche un peu partout, Mac PC, sauf que sous IE 5.2 Mac, le pavé de texte est sans mimite de taille à droite et en bas...
Faut sans doute bidouiler le CSS, j'ai pas encore mis le nez dedans.

D'autre part, on peut pas mettre une image dans ce conteneur...?

Michel, toujours aussi nul en codage ! (;o)))))

signaler à un administrateur
Commentaire de mobman02 le 09/11/2005 14:25:05

Si si tu peu mettre une image :)
Dans le block l'HTML et autorisé, tu pourrais même y mettre une page web compléte lol ^^
<img src="URL" alt="" />

signaler à un administrateur
Commentaire de metis15 le 09/11/2005 17:50:31

OK, merci pour ce tuyau !!!

En revanche, où je dois bidouiller pour que la bulle ne continue pas à l'infini en bas et à droite, sous IE 5.2 sur Mac ?

signaler à un administrateur
Commentaire de metis15 le 09/11/2005 17:52:32

D'accord !!! Quand il y a erreur sur le serveur, ça part quand même !! Désossé, de rire, scusez-moi hein... (;o)))))))) Faudra que je change d'image, j'ai vraiment l'air con !

signaler à un administrateur
Commentaire de brex74 le 20/12/2005 21:08:10

Bonjour,
J'aimerais bien utiliser ton script malheureusement je n'arrive pas à régler le problème de Doctype. Quelqu'un a t il une solution ?

Si on peu pas mettre de doctype dans la page le code n'est plus vraiment exploitable pour un site valide XHTML par exemple...

Merci brex

signaler à un administrateur
Commentaire de mobman02 le 21/12/2005 01:26:05

Je n'ai pas de solution miracle dsl,
c'est un bug que je ne m'explique pas, mon javascript est pourtant ultra simple,
et javascript n'a rien a voir avec le doctype,
mais ce dernier empêche javascript de fonctionner...
Je me suis très longtemps pris la tête avec cette anomalie, mais j'ai pas trouver de solution dsl...

signaler à un administrateur
Commentaire de mobman02 le 21/12/2005 01:29:34

AH ! J'ai peut etre trouvé !
http://forum.alsacreations.com/topic-5-8519-1-Rsolu-DOCTYPE-javascript-et-incompatibilite-Firefox.html
Mais il se fait tard, je m'occupe de modifier mon javascript demain ;)

signaler à un administrateur
Commentaire de mobman02 le 21/12/2005 11:11:39

Voila ça fonctionne maintenant ;)
J'ai mis a jour le zip et la page d'exemple, les modifications sont mineures.

signaler à un administrateur
Commentaire de brex74 le 21/12/2005 20:55:30

Ok merci beaucoup,
maintenant ton code est vraiment expoitable pour un site web complet.

Bonne continuation
Brex

signaler à un administrateur
Commentaire de PetoleTeam le 27/12/2005 13:52:23

Sous IExplorer lorsque l'on remonte la page d'une ligne la Bulle ne se positionne pas au bon endroit...

signaler à un administrateur
Commentaire de mobman02 le 27/12/2005 14:43:09

Tu est sûr de toi ?
J'ai tester le script sous différentes version d'IE et j'ai jamais eu ce probleme :/

signaler à un administrateur
Commentaire de mobman02 le 27/12/2005 14:44:13

galére ! depuis ma derniére modif ça marche plus, je repare ça de suite, excusez moi !

signaler à un administrateur
Commentaire de sylc88 le 13/01/2006 15:22:35

Bonjour je suis débutant, j'ai teste ce script et je souhaite dans l'infobulle y mettre une image quelle est la syntaxe exacte svp
j'ai essaye <img src="url de mon image"> mais avec les guillemets il me dit que y'a une erreur de script et lorsque j'enleve les guillemets je n'ai plus cette erreur par contre j'ai un carre blanc avec une croix rouge dedans et pourtant je suis absolument sur de mon url
Par avance merci!

signaler à un administrateur
Commentaire de sylc88 le 13/01/2006 15:25:36

ah non c bon j'ai tropuve j'ai enlevé les guillemets et j'ai mis un / a la place d'un \

Merci pour toutes ces sources et bonne continuation.

signaler à un administrateur
Commentaire de FraGag le 14/01/2006 00:32:31

sylc88: Le problème avec les guillemets, c'est que ça termine la valeur de l'argument onmouseover, donc tu dois l'échapper : remplace " par &quot;. Ça donnera donc "<img src&quot;url de ton image&quot;>".

signaler à un administrateur
Commentaire de tibouh le 26/01/2006 16:01:06

Hello,

Bravo pour ton petit script.
Je suis Ultra Débutant et je viens d'utiliser ton script qui fonctionne nickel, je l'ai adapté a des champs d'un tableau.
Ce pendant, mon tableau fait environ une trentaine de colonnes donc le scroll s'effectue de haut en bas et de droite à gauche. Lorsque je passe mon curseur sur une case du tableau se trouvant à l'extreme droite de mon scroll, rien ne s'affiche car en fait la bulle s'affiche en dehors de l'écran sur la gauche.
Y aurait-il moyen de faire quelque chose ?

Merci d'avance et @+
Tibouh......   :-))

signaler à un administrateur
Commentaire de tsiaoping le 01/02/2006 03:20:20

Salut et bravo pour ce script, il y en  a peu qui marche comme le tien (on a essayer +sieurs !), le code est clair et les commentaires impec. confirmation que le &quot; marche tres bien pour les images (ce qui n'est pas evident). Cependant un petit probleme de retaille de browser sur Firefox: l'infobulle est s'eloigne de la souris plus on agrandit l'ecran (je travaille avec un grand ecran de haute resolution. Par contre sur IE aucun probleme. Quelqu'un a t il une idee pour regler ce probleme ??
Merci d'avance.
Tsiao Ping

signaler à un administrateur
Commentaire de MissGally le 05/02/2006 01:19:17

Hello ! J'ai exactement le même problème que Tsiaoping. Ne me dites pas que c'est un handicap d'avoir un grand ecran ! :D En tout cas s'il y a une solution, je suis preneuse. (et merci pour ce super script !)

signaler à un administrateur
Commentaire de brex74 le 05/02/2006 21:08:49

Je peu vous donner un semblant de solution.... qui relève plutôt de la bidouille qu'autre chose.
dans le style de la div infobulle vous rajouter un margin-left.
Rien de bien folichon me direz vous mais mettez en deux à la suite comme ceci :

margin-left: 10px !important;
margin-left: 20px;

Sous Firefox l'infobulle aura un décalage de 10px et sous IE le décallage sera de 20px;
Explication:
L'attribut !important permet de forcer une valeur mais elle n'est pas interprétée par IE qui prend en compte la dernière valeur donnée pour la propriété.

Cette astuce vous permet pour n'importe quel élément positionné en CSS de préciser une valeur différente pour IE et firefox. Personelement je l'utilise beaucoup !

A + Brex

signaler à un administrateur
Commentaire de MissGally le 06/02/2006 00:19:31

Hum... perso, chez moi ça ne change rien au problème :/ zut zut
Il doit y avoir un système de calcul automatique mais je ne sais pas comment régler ça...

signaler à un administrateur
Commentaire de ennery le 03/03/2006 02:19:42

super script qui m'est bien utile. merci et bravo

signaler à un administrateur
Commentaire de pierrer12 le 21/03/2006 22:51:21

Merci pour ce script, très clair et bien expliqué, qui pourrait m'être utile si j'arrive à résoudre un problème...
En fait j'ai écrit ca :
... <script>
var evenements = "1-ev1.$2-ev2.$1-ev3."//une liste d'évènements
events=evenements.split("$")
//calcul du nombre d'evènements
nevents = events.length

document.write("<TABLE BORDER='1' >");
document.write("<TH COLSPAN=0>");
document.write("<TD>")
document.write('<div id=description style="visibility:hidden;position:absolute;border:1 solid #00ff00"></div>');

for (n=0; n<nevents; n++){
datec = events[n].split("-")
document.write('<div id=description style="visibility:hidden;position:absolute;border:2 solid #ff0000"></div>');
document.write('<a href=# onmouseover= "montre(datec[1])" onmouseout="cache()">',datec[1],'</a>')
document.write("<TD>")
document.write('<p onmouseover="montre(datec[1]);" onmouseout="cache();">',datec[1],'')
document.write("<TD>")
}
</script>...
mais je ne comprends pas il ne me prends que le dernier élément de ma liste pour le mettre dans la bulle... Quelqu'un peut m'aider?

signaler à un administrateur
Commentaire de TeDeum le 25/03/2006 10:42:53

Salut,

Déjà très bonne source. Toutes mes félicitations !!!
Une amélioration est pourtant nécessaire. En effet la plupart des navigateurs utilisent leur mode standard si le document utilise un doctype XHTML ou HTML 4. Ces mêmes navigateurs utilisent leur mode de compatibilité (mode quirk) en l'absence de doctype XHTML ou HTML4 ou en présence d'un doctype HTML 4 transitional incomplet (sans le lien vers le fichier dtd). Dans ce cas on peut avoir la valeur document.body.scrollTop toujours à 0 (Donc le hack IE pour le scroll ne fonctionne plus :-P) et c'est la valeur document.documentElement.scrollTop qu'il faut utiliser.

Je te propose donc de modifier ta source comme suit pour tenir compte du mode quirck d'IE :
Version originale :
...
    else {
    GetId("curseur").style.left=window.event.x + 5+"px";
    GetId("curseur").style.top=window.event.y + 10 + document.body.scrollTop+"px"; // Sous IE, voici un petit hack pour que lors du scroll la position reste bonne !
    }
...
Version proposée :
    else {
    if(document.documentElement.clientWidth>0) {
        GetId("curseur").style.left=20+event.x+document.documentElement.scrollLeft+"px";
        GetId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
    }
    else {
        GetId("curseur").style.left=20+event.x+document.body.scrollLeft+"px";
        GetId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
    }
    }

Voilà, j'espère que ca pourra aider à améliorer cette source très sympa !

signaler à un administrateur
Commentaire de mobman02 le 25/03/2006 13:53:57

TeDeum je te dois une fière chandelle :)
Merci de ton implication pour ma source, j'ai appliqué la modif que tu propose, elle fonctionne nickel ;)
Cette source commence a ressembler à quelque chose :) (Prochaine modif ? Un effet de fondu, ou une tempo a l'apparition de la bulle)

signaler à un administrateur
Commentaire de sofybj le 01/04/2006 14:41:58

Bonjour,
Moi je voudrais mettre un bon morceau de texte. Mais quand je fais un copier coller de mon texte j'ai une erreur !!
Merci ...

signaler à un administrateur
Commentaire de mobman02 le 01/04/2006 14:50:12

Quel genre d'erreur ?

signaler à un administrateur
Commentaire de Caldera le 12/04/2006 18:36:05

slt merci en tout cas à ce script, c'est exactment ce que je recherchais mais j'ai un problème depuis que j'ai rajoute un attribut dans un <area /> :

<area shape="rect" coords="423,79,533,150" OnMouseOver="montre('message de test');" OnMouseOut="cache();" href="index.php?p=zone&amp;sect=EURNAFR" />

depuis le href je n'obtiens plsu au passage de la souris l'info bulle !
et n'tant pas un pro du js je ne vois pas d'ou cela provient !
merci encore

signaler à un administrateur
Commentaire de mobman02 le 12/04/2006 18:51:33

Salut,
déjà tu peut retirer les lettres en majuscule dans OnMouseOver et OnMouseOut, en XHTML tous les attributs s'écrive en minuscules (c'est peut ça le problème si tu as un doctype xhtml).

Sinon je ne vais pas quel pourrait être le problème avec le href="", je ne pense pas que l'erreur vienne de là.
Si tu es sous Firefox, est ce que le console javascript te retourne un message d'erreur ?

signaler à un administrateur
Commentaire de heekle le 24/04/2006 11:53:08

Bonjour,
J'ai un léger problème UNIQUMENT sous IE lorsque on utilise ce source avec plusieurs shapes sur une image cliquable. Admettons deux zones distincte A et B, une en haut (A) de l'image, l'autre en bas (B). Lorsque que l'on amene la souris sur la zone A, pas de probleme l'infobulle correspondant à A s'affiche correctement, par contre si on descend pour mettre le curseur sur la zone B en bas, l'infobulle correspondant à B va s'afficher quelques dizièmes de seconde à l'endroit ou elle s'était affichée précédemment pour la partie A, avant de se mettre au bon endroit (partie B). L'inverse est vrai si on commence par B.
Je ne sais pas si j'ai été assez clair ?
Si quelqu'un avait une idée !

signaler à un administrateur
Commentaire de mobman02 le 24/04/2006 12:02:15

Oulah n'appuis QU'UNE FOIS sur le bouton de validation ! :D
Sinon pour ton probléme je ne sais pas du tout, normalement la position de la bulle est mise à jour en continu quand la bulle est affiché, la mise à jour s'arrête quand la bulle n'est plus affiché.
Peut être que sur le cour lapse de temps qui sépare les deux zone IE à un peu de mal...

Solution : Essaye de retirer la condition if(i) { } de la fonction move, comme ceci :

function move(e) {
if (navigator.appName!="Microsoft Internet Explorer") { // Si on est pas sous IE
GetId("curseur").style.left=e.pageX + 5+"px";
GetId("curseur").style.top=e.pageY + 10+"px";
}
else { // Modif proposé par TeDeum, merci à lui
if(document.documentElement.clientWidth>0) {   GetId("curseur").style.left=20+event.x+document.documentElement.scrollLeft+"px";
GetId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
}
else {
GetId("curseur").style.left=20+event.x+document.body.scrollLeft+"px";
GetId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
}
}
}

Si ça marche merci de le dire hein ;) mais bon cette condition sert a éviter que lorsqu'on approche le curseur d'une barre de scroll, on ai pas l'impression la page page grandie...

signaler à un administrateur
Commentaire de heekle le 24/04/2006 12:22:40

Yop effectivement ça marche maintenant :)
Mais l'effet de la page qui s'agrandit quand on approche des bords, est maintenant bien présente :(

Arf .... faudrait trouver un compromis entre les deux :-/

En tout cas merci !

signaler à un administrateur
Commentaire de mobman02 le 24/04/2006 12:23:57

:) Ravis d'avoir pu t'aider,
pour ce qui est du compromis entre les deux... bah non la désolé je ne vois pas comment faire :/

@+

signaler à un administrateur
Commentaire de elisacarli le 15/05/2006 15:02:12

Merci mille fois !!!
Je savais bien que je finirais par trouver exactement ce qu'il me fallait !!
Vous êtes trop forts !!!

Merci
Elisa

signaler à un administrateur
Commentaire de DqvY le 19/06/2006 09:50:17

Bonjour je viens de trouver votre code, il est très efficace et il n'en existe pas beaucoup avec l'intégration HTML, cependant j'ai un soucis dans ma page php, la fenetre s'ouvre en bas a droite et non pas à coté du curseur auriez vous une solution?

signaler à un administrateur
Commentaire de La Guite le 20/06/2006 11:06:29

Bonjour, je trouve ce code tres bien fais, simple et clair (parfait pour débuter).

Juste un petit problème pour moi, j'ai esseyer le coder d'exemple, sa marche nickel.
Par contre je l'ai incorporé dans ma page html (qui utilise aussi du php) et la je remarque que la bulle s'affiche correctement mais ne disparais pas quand ma souris n'est plus sur le lien (resp. le texte).

J'ai testé sur IE et FireFox c'est le même resultat.

Quelqu'un aurait une idée ?

signaler à un administrateur
Commentaire de mobman02 le 21/06/2006 16:20:56

Hum, peut être que tu a oublié de mettre " onmouseout="cache();" " dans les attribus de tes éléments HTML concernés ?

signaler à un administrateur
Commentaire de La Guite le 23/06/2006 10:55:48

Merci de répondre c'est sympa.

Alors non je n'ai pas oublier le onmouseout="cache()"

Pour t'expliquer encore mieux je te montre la page qui bug

http://www.laguite.com/index.php?page=projets

Tu peux remarquer que la bulle ne s'enva plus si tu passe au dessus de "synthèse d'images"

PS: tu peux voir les sources de la page si t'as firefox grâce à Ctrl+U (même si je suis sur que tu le sais déjà)

signaler à un administrateur
Commentaire de FraGag le 23/06/2006 16:57:28

La Guite: Il y a 2 fonctions cache() sur ta page. La deuxième, qui prend un argument, remplace la fonction cache() de ce script.

signaler à un administrateur
Commentaire de La Guite le 24/06/2006 09:35:21

Méacoulpa...

Je suis vraiment tête en l'air.
Dire que j'avais cherche en plus si j'avais pas une fonction qui portait le même nom....

(ok, on peut me jeter des cailloux)

Merci FraGag

signaler à un administrateur
Commentaire de adressprov le 27/06/2006 10:56:02

Très bon code, mais il ne marche pas sur firefox, je ne comprends pas pour vous autre tout marche bien. Sinon j'ai testé sur IE et là pas de problème.

signaler à un administrateur
Commentaire de adressprov le 27/06/2006 11:23:18

Je viens de l'insérer dans mes balises php et là plus de problème.
Vraiment désolé, j'aurais du tester ça avant de poster.
Merci pour ce code qui fonctionne à la perfection.

signaler à un administrateur
Commentaire de netuser7671 le 29/07/2006 17:37:21

Salut,

Ce script est tout simplement genial. Je l'ai intégré sur mon site et les données affichées dans l'infobulle proviennent de ma base de données MySQL.

Sinon, pour la transparence j'ai trouvé un bon truc et ça marche chez moi avec IE6 et FireFox.
Voici mon CSS modifié :

.infobulle{
position: absolute;
visibility : hidden;
padding: 10px;
font-family: Verdana, Arial;
font-size: 10px;
background-color: #FFFFFF;
/*width: 300px;*/
width:300px;
color: #000000;
border: Solid 1px;
filter:alpha(opacity=70);
-moz-opacity:0.70;
opacity: 0.70;
font-weight: bold;
}

Les lignes suivantes gèrent l'opacité (ici, à 70%):

        filter:alpha(opacity=70);
-moz-opacity:0.70;
opacity: 0.70;

signaler à un administrateur
Commentaire de mobman02 le 29/07/2006 22:36:06

Hum pas mal,
mais il en manque une ;)

Il y a actuellement 4 propriété CSS pour faire varier une opacité :

opacity: 0.5;
Le technique officielle du W3C, elle ne fonctionne que sous Mozilla Firefox.
-moz-opacity: 0.5;
Celle ci fonctionne sur les anciennes versions de Mozilla et Phoenix/FireBird/FireFox.
-khtml-opacity: 0.5;
Celle ci est la méthode des navigateur utilisant le moteur KHTML (Konquerer sous Linux et Safari sur MacOS).
filter: alpha(opacity=50);
Et pour finir, la méthode a utiliser sur MSIE (elle ne marche QUE chez lui).

Et il ne faut pas oublier un bug de IE, si l'élément que vous voulez faire varier n'a pas de width défini, l'opacité ne chagera pas ! :D muahaha ^^

signaler à un administrateur
Commentaire de Nowig le 21/11/2006 12:08:42

Hé hé, moi qui ai plus ou moins zappé le JavaScript et qui aujourd'hui en ait besoin pour mon stage, cette source va probablement m'éviter des heures de déchiffrage de code que je ne comprends pas...
Merci et bravo !!

signaler à un administrateur
Commentaire de chenar le 13/02/2007 13:13:19

Salut, j'ai bien galeré pour trouver un code pas trop compliqué à utiliser et même si le tien c'est vrai est plutôt simple ya un hic quelque part, et ça vient trés certainement de moi lol. Je vous montre mon code, je passe par une page asp et dans une autre htm je fais juste un appel avec un  <%showToolTip 1%> qui me renvoie ça si je demande le code source une fois la page chargée :
<div id="curseur" class="infobulle"/>
<img onmouseout="cache()" onmouseover="montre(Test1ceci est un test);" src="images/icon_ToolTip_Help.gif"/>

<link href="tooltip.css" rel="stylesheet" media="screen">
<script language="javascript" type="text/javascript">
<!--
function GetId(id)
{
return document.getElementById(id);
}
var i=false; // La variable i nous dit si la bulle est visible ou non

function move(e) {
  if(i) {  // Si la bulle est visible, on calcul en temps reel sa position ideale
    if (navigator.appName!="Microsoft Internet Explorer") { // Si on est pas sous IE
    GetId("curseur").style.left=e.pageX + 5+"px";
    GetId("curseur").style.top=e.pageY + 10+"px";
    }
    else { // Modif proposé par TeDeum, merci à lui
    if(document.documentElement.clientWidth>0) {
        GetId("curseur").style.left=20+event.x+document.documentElement.scrollLeft+"px";
        GetId("curseur").style.top=10+event.y+document.documentElement.scrollTop+"px";
    }
    else {
        GetId("curseur").style.left=20+event.x+document.body.scrollLeft+"px";
        GetId("curseur").style.top=10+event.y+document.body.scrollTop+"px";
    }
    }
  }
}

function montre(text) {
  if(i==false) {
  GetId("curseur").style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securité) on le rend visible.
  GetId("curseur").innerHTML = text; // Cette fonction est a améliorer, il parait qu'elle n'est pas valide (mais elle marche)
  i=true;
  }
}
function cache() {
if(i==true) {
GetId("curseur").style.visibility="hidden"; // Si la bulle etais visible on la cache
i=false;
}
}
document.onmousemove=move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
//-->
</script>


<%
class clToolTipType
public IconFileName
public IconColor
End Class

'Declare 3 ToolTipsType
Dim oToolTipType(2)

'Define Icon Help Properties
set oToolTipType(0) = new clToolTipType
oToolTipType(0).IconFileName = "images/icon_ToolTip_Help.gif"
oToolTipType(0).IconColor = "#FFFFFF"

'Define Icon Info Properties
set oToolTipType(1) = new clToolTipType
oToolTipType(1).IconFileName = "images/icon_ToolTip_Info.gif"
oToolTipType(1).IconColor = "#FFFFFF"

'Define Icon Warnning Properties
set oToolTipType(2) = new clToolTipType
oToolTipType(2).IconFileName = "images/icon_ToolTip_Warnning.gif"
oToolTipType(2).IconColor = "#FFFFFF"

Sub ShowToolTip (eId)
if trim(eId)="" then exit sub

dim oRecordSet : set oRecordSet = new clRecordSet
if not oRecordSet.ExecuteQuerySQL("select * from ToolTips where id="&eId) then
set oRecordSet = nothing
exit sub
end if

  response.write "<div id='curseur' class='infobulle'></div>"
response.write "<img src='"&oToolTipType(oRecordSet.gRs("cType")).IconFileName&_
"'onmouseover = \'montre("&_
(oRecordSet.gRs("cTitle"))&(oRecordSet.gRs("cDescription"))&_
");\' onmouseout=\'cache()\'>"

oRecordSet.CloseQuery()
set oRecordSet = nothing

End Sub
%>

signaler à un administrateur
Commentaire de sonoboss le 28/03/2007 23:33:58

Salut!

J'ai essayé d'utiliser ce script sur une de mes pages, avec le zip, ca marche sans pb.
Problème :
J'ai essayé d'intégrer une structure plus complexe (un tableau) dans la fontion "montre('TEXTE');" mais je n'y arrive pas... Il n'affiche pas l'infobulle...

Pour info, mon code :

<p onmouseover="montre('<table class=\'diapo\' cellpadding=\'0\' cellspacing=\'0\'>
  <tr>
    <td rowspan=\'3\' width=\'45px\' align=\'right\' class=\'diapoG\'></td>
    <td height=\'18px\' width=\'159px\' align=\'center\' valign=\'top\' class=\'haut\'></td>
    <td rowspan=\'3\' width=\'45px\' align=\'left\' class=\'diapoD\'></td>
</tr>
  <tr>
    <td valign=\'baseline\'>sdfsdfsdfssds sdfsdf sdf</td>
  </tr>
  <tr>
    <td height=\'18px\' width=\'159px\' align=\'center\' valign=\'bottom\' class=\'haut\'></td>
  </tr>
</table>');" onmouseout="cache();">Un paragraphe avec une info bulle !</p>

J'ai beau retrourner le pb dans tous les sens, je ne trouve pas...

Pour info, la feuille CSS est liée en entête de page et je suis sur du fonctionnement du tableau "seul"...

Merci de votre aide!

signaler à un administrateur
Commentaire de elisacarli le 29/03/2007 10:07:03

Je pense qu'il ne faut pas que tu aille à la ligne à chaque <tr> ou <td>. J'ai essayé comme ça et ça fonctionne.

<p onmouseover="montre('<table border=\'1\' class=\'diapo\' cellpadding=\'0\' cellspacing=\'0\'><tr><td rowspan=\'3\' width=\'45px\' align=\'right\' class=\'diapoG\'>toto</td><td height=\'18px\' width=\'159px\' align=\'center\' valign=\'top\' class=\'haut\'>tata</td><td rowspan=\'3\' width=\'45px\' align=\'left\' class=\'diapoD\'>titi</td></tr><tr><td valign=\'baseline\'>sdfsdfsdfssds sdfsdf sdf</td></tr><tr><td height=\'18px\' width=\'159px\' align=\'center\' valign=\'bottom\' class=\'haut\'>coucou</td></tr></table>');" onmouseout="cache();">Un paragraphe avec une info bulle !</p>

signaler à un administrateur
Commentaire de sonoboss le 30/03/2007 11:29:06

Ca marche merci!

signaler à un administrateur
Commentaire de Emmanuel007 le 25/04/2007 10:43:05

Bonjour,
J'avais fait des infobulles en CSS classiques avec SPAN mais mon client me dit que ça ne marche pas correctement sur son Mac : les info bulles sont masquées lorsqu'on descend dans la page selon lui. Mais comme je n'ai pas de Mac et que les outils de screenshot Safari ne montrent pas les infobulles, je suis bien incapable de m'assurer de la compatibilité d'autres scripts.

Je viens de mettre en oeuvre la solution de Mobman02. Ca marche super sur IE 64 et Firefox chez moi :)

Mais quelqu'un a t-il testé si ça fonctionnait sous Safari ?

signaler à un administrateur
Commentaire de nfabry le 08/05/2007 19:03:02

Bonjour, ce script me convient super !
Mais j'ai deux petits problèmes avec.
Peut-être pourrez-vous m'aider sur l'un d'eux :
1) est-il possible de faire en sorte que le fond de l'infobulle ne soit pas translucide, mais bien opaque ?
2) sur la droite de ma page, j'ai une barre de navigation, gérée en css (qui n'est pas une frame), et je ne sais pour quelle raison, l'info-bulle passe dessous celle-ci. Assez ennuyeux pour lire le texte de l'infobulle evidemment !

Merci pour votre aide !

signaler à un administrateur
Commentaire de mobman02 le 08/05/2007 22:25:23

Salut,
par défaut la bulle n'est pas translucide, elle est bien opaque (on ne voit pas à travers).
Si tu veut la rendre translucide ajoute ces 4 lignes dans le CSS de la bulle :
opacity: 0.5;
-moz-opacity: 0.5;
-khtml-opacity: 0.5;
filter: alpha(opacity=50);

Et pour ce qui est de ton autre problème essaye de mettre un :
z-index:1000;
dans le CSS de la bulle toujours.

signaler à un administrateur
Commentaire de nfabry le 09/05/2007 09:45:29

Merci ! Super, ça marche !
Bizarement, mon infobulle était vraiment translucide, mais en ajoutant ces 4 lignes et en mettant leurs valeurs à 1 (et 100 respectivement), l'infobulle est alors opaque.
Et la dernière ligne (z-index) résout bien le deuxième problème !

Merci beaucoup !

signaler à un administrateur
Commentaire de ScuZy45 le 03/06/2007 16:25:36

GG pour ce magnifique code, c'est vraiment la meilleur infobulle personnalisable que j'ai vu pour le moment!!

Petit probleme : la ligne z-index:1000; ne résout pas le faite que l'infobulle passe au-dessous du flash :s

Help me mobman! Je sais que sa doit être une petite ligne mais laquelle, tel est la question ;)

signaler à un administrateur
Commentaire de mobman02 le 03/06/2007 17:04:54

Hum mais ça c'est pas la faute de l'infobulle ;)
Il faut ajouter quelques trucs à ton inclusion flash :
<param name="wmode" value="transparent" />
et  wmode="transparent"  dans le <embed>

Voir ici : http://www.duoh.com/csstutorials/flazindex/index3.html

;)

signaler à un administrateur