begin process at 2010 03 16 17:10:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Effets

 > INFO-BULLE PERSONNALISABLE COMPATIBLE FIREFOX ET IE

INFO-BULLE PERSONNALISABLE COMPATIBLE FIREFOX ET IE


 Information sur la source

Note :
9,16 / 10 - par 25 personnes
9,16 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Effets Classé sous :info, bulle, infobulle, titre, tooltip Niveau :Initié Date de création :10/08/2005 Date de mise à jour :18/02/2009 09:19:22 Vu / téléchargé :40 445 / 6 176

Auteur : mobman02

Ecrire un message privé
Site perso
Commentaire sur cette source (98)
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://damienalexandre.fr/share/info-bulle -javascript.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

Les Membres Club peuvent 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.
18 février 2009 09:19:23 :
Modification du lien de la page exemple.

 Sources de la même categorie

AFFICHER OU CACHER UN COMPOSANT AVEC JAVASCRIPT V1.0 par xloadx
Source avec Zip MOOLOUPE - EFFET DE LOUPE VIA LE FRAMEWORK MOOTOOLS par Miky76
Source avec Zip MOOTOOLTIP par Miky76
Source avec Zip Source avec une capture PAINTPIX (VERSION TESTE. EXPORTATION IMAGE POUR SITE WEB) par sitajony
FONCTION BLINK ( TESTÉE SOUS FF ) PORTABILITÉ IE OP ET GC EN... par xloadx

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture INFOS BULLE PARAMÉTRABLE (TOUS NAVIGATEURS) par mattho
GÉNÉRATEUR D'INFO-BULLES DYNAMIQUES par Lomendil
Source avec une capture EXPLORATEUR DOM par biskbart
Source avec Zip BULLE par Zart
DES INFO-BULLES ORIGINALS par patoch

Commentaires et avis

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...

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 ;)

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

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 !

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

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 !
@+

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é)

Commentaire de LiBe le 30/08/2005 19:39:19

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

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>";

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)

Commentaire de mailstef le 14/09/2005 10:22:43

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

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.

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 ;)

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.

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 ?

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 ?

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.

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)))))

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="" />

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 ?

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 !

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

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...

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 ;)

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.

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

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...

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 :/

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 !

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!

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.

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;>".

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......   :-))

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

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 !)

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

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...

Commentaire de ennery le 03/03/2006 02:19:42

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

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?

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 !

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)

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 ...

Commentaire de mobman02 le 01/04/2006 14:50:12

Quel genre d'erreur ?

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

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 ?

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 !

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...

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 !

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 :/

@+

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

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?

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 ?

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 ?

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à)

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.

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

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.

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.

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;

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 ^^

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 !!

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
%>

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!

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>

Commentaire de sonoboss le 30/03/2007 11:29:06

Ca marche merci!

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 ?

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 !

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.

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 !

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 ;)

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

;)

Commentaire de ScuZy45 le 03/06/2007 17:47:42

ça marche!

Merci mec sa fait vraiment plaisir de pouvoir compter sur des personnes qualifié dans ce domaine!!

PS : Escuse moi d'avoir accusé l'infobulle sans preuve...

Commentaire de Emmanuel007 le 04/06/2007 09:07:46

Merci pour ce script. Je l'ai testé sous presque tous les navigateurs. Je répond donc à ma question plus haut : il est parfaitement compatible avec Safari.

Pour ceux qui voudraient voir le résultat, c'est ici : http://www.akpsy.com

C'est un site de psychanalyse, instructif et agréable à lire, sur des thèmes de société. L'accès aux articles pouvait être un peu laborieux. Mais grâce aux infobulles, un résumé s'affiche au passage de la souris sur le titre/lien de l'article pour en indiquer le thème.

Commentaire de nfabry le 04/06/2007 11:45:48

Quelque chose m'étonne :
personne n'a eu de problèmes avec des balises <DIV> ou <SELECT> ?
avec mes div, la position se réinitialise à zéro dès que la souris passe dessus (uniquement sous IE).
Conséquence : l'infobulle s'affiche au mauvais endroit (bcp trop haut).
J'ai corrigé ce problème en remplacant :
[CODE]
    else { // mode quirck d'IE
       if(document.documentElement.clientWidth>0) {
         document.getElementById("curseur").style.left=10+event.<b>x</b>+document.documentElement.scrollLeft+"px";
         document.getElementById("curseur").style.top=10+event.<b>y</b>+document.documentElement.scrollTop+"px";
       }
       else {
         document.getElementById("curseur").style.left=10+event.<b>x</b>+document.body.scrollLeft+"px";
         document.getElementById("curseur").style.top=10+event.<b>y</b>+document.body.scrollTop+"px";
       }
    }
[/CODE]
par :
[CODE]
    else { // mode quirck d'IE
       if(document.documentElement.clientWidth>0) {
         document.getElementById("curseur").style.left=10+event.clientX+document.documentElement.scrollLeft+"px";
         document.getElementById("curseur").style.top=10+event.clientY+document.documentElement.scrollTop+"px";
       }
       else {
         document.getElementById("curseur").style.left=10+event.clientX+document.body.scrollLeft+"px";
         document.getElementById("curseur").style.top=10+event.clientY+document.body.scrollTop+"px";
       }
    }
[/CODE]

Et en ce qui concerne les balises <SELECT>, l'infobulle passe en dessous de celles-ci. Même un z-index n'y change rien.
Et ça par contre, j'ai pas réussi à résoudre.

Donc si qqn a une solution (ou même une idée), merci d'avance !

Commentaire de nfabry le 04/06/2007 11:47:25

oups, les balises <b> et [CODE] ne marchent pas ici
et pas moyen d'éditer
n'en prenez pas compte
désolé

Commentaire de mobman02 le 04/06/2007 11:55:53

Quelle version de IE ?
Je n'ai jamais eu ce problème en tout cas.
Je me renseignerais sur la syntaxe exacte de event.y (ou event.clientY).

Sinon pour la balise <select> c'est un bug d'IE, les boite de selections sont toujours par dessus la page :/
Il existe des hacks il me semble, a toi de voir ;)

Commentaire de nfabry le 04/06/2007 13:28:40

C'est pour la version 6 d'IE
à priori la div n'a pas d'attributs particulier pourtant

Pour le <SELECT>, il ne me reste plus qu'à fouiller un peu :)

Commentaire de FraGag le 10/06/2007 08:01:10

Le truc pour afficher quelque chose par-dessus un <SELECT>, c'est de mettre ce quelque chose dans un <IFRAME>... c'est laid mais c'est la seule solution.

Commentaire de ptitdragonvert le 06/08/2007 11:16:47

Super script bravo!!!
Facile a installer tout bien pour moi!!!
10/10

Commentaire de zeguizmo le 30/01/2008 13:44:00 7/10

Bien vu Nfabry,

J'ai précisément le meme probleme que toi, sur la version 6 et 7 d'IE, la bulle se mange -300px en hauteur comme en largeur et s'affiche par conséquent à un endroit plus qu'étrange. Aucun souci sur FireFox.

Ta solution fixe bien le pb.

Merci a vous,

ZeGuizmo

Commentaire de ppellero le 02/03/2008 21:19:03

Bonjour,
Superbe script en effet!
Mais moi j'ai un problème de variable, quand je passe le texte par une variable par exemple "$bulle" si le texte depasse 20car il ne s'affiche pas. En dessous de 20car il s'affiche.
Je prends le texte dans des fichier texte et je n'affiche que le quard de ce que je pourrai afficher dans une balise "title".
Voici le code:
echo "<tr bgcolor='#91b6d3'><td><a href=\"javascript:void(0)\" onclick=\"window.open('$homedir/$dossier[$i]','','top=100, left=250,width=700,height=620');\" onmouseover=\"montre('$bulle');\" onmouseout=\"cache();\"><font color='#000080'><b>$rep<br/>$bulle</b></a></td>";

Si je met le texte en clair il affiche tout mais dans une variable il n'affiche que 20car.
Quelqu'un peut-il m'aider ?

Commentaire de mobman02 le 02/03/2008 21:40:05

Salut,
le problème ne vient pas du script d'infobulle mais de ton PHP,
comme construit tu la variable $bulle ? Un echo $bulle; donne quoi ?

Commentaire de ppellero le 04/03/2008 00:05:55

Salut,

La variable $bulle etait bonne.
J'ai trouvé le problème qui me tronquait l'infobulle c'était les apostrophes et les retour chariot.
J'ai mis ce qui suit dans mon code et ca marche.
$bulle = addslashes($bulle);
$bulle = str_replace(chr(13).chr(10), " ",$bulle);

Merci de ta réponse

Commentaire de changkoukaii le 13/03/2008 10:57:55

Salut,
bon script,
seul souci, quand l'event est placé tout a droite de la page, l'infobulle apparait a droite de la souris,
le div est donc caché (un scrollbar apparait)

Si quelqu'un a une solution, je sèche ^_^

Commentaire de KamiRaiden le 07/04/2008 16:45:02 10/10

Bonjour, déjà merci pour l'info-bulle, elle marche super par contre j'ai un petit bug bizarre sous IE 7 et Firefox (j'ai pas essayé IE6)

Voici l'application sur laquelle je travaille.
www.lord-raiden.be/Photos/infoBulle.jpg

Les info bulles apparaissent quand je passe sur les points d'interrogations et affiche les infos du contact

Quand je clique sur un des trois boutton (Sélectionner tout, déselectionner tout et Inverser)cela execute du java script interragissant sur les checkbox de droites.

Après plus aucune info-bulles ne s'affichent et c'est comme si j'en avais une info bulle fantome qui restais coller à ma souris quand je me met en bas a droite les barre de defillement s'aggrandissent.

Je sais pas si vous auriez une solution.

Merci d'avance.

Commentaire de brice_17 le 10/05/2008 14:26:23

Bonjour à toutes et à tous,
Ce script est super bien :p
Mais je souhaiterai mettre une image dans l'info bulle... j'ai fait ca :

<p onmouseover="montre('<img src="images/batiment1.png" alt="" />');" onmouseout="cache();">Un paragraphe avec une info bulle!</p>

Mais ca ne fonctionne pas... j'ai du faire une erreur (logique...)

Voici le résultat : ');" onmouseout="cache();">Un paragraphe avec une info bulle !

Qu'est ce qui ne fonctionne pas ?

Merci pour vos éventuelles réponces :)

Commentaire de brice_17 le 10/05/2008 14:34:08

J'ai relu tous les commentaires déposés, et je vient de voir que le problème venait des guillemets... j'ai donc testé avec ce code : <img src&quot;url de ton image&quot;>
Avec ce code cela fonctionne, mais je ne voit pas l'image... j'ai juste un petit carré jaune... pourtant le lien de mon image est correct...

Commentaire de heihei69 le 17/06/2008 17:31:28

j'ai un problème avec ce code: j'ai de nombreux numéro sur lesquels j'ai positionner des liens mais également des infos-bulles. Quand je passe sur un numéro l'info bulle s'affiche mais si un autre numéro est au niveau de celle-ci il vient se positionner dessus occultant une partie des informations...
Avez-vous une idée?

Commentaire de dezossor le 09/11/2008 10:27:19 9/10

Bonjour,

Comme vous pouvez vous en douter, je partage un peu l'opinion de tout le monde sur cette source... Excellente

Je vais essayer d'y apporter mon humble contribution car j'ai eu pas mal de soucis à l'adapter à mes besoins, et la solution etait en faite toute simple.

Je cherchais juste à faire apparaître dans celle ci une str formater en php et dont les elements sortaient d'une BDD mysql. Lorsque l'èlèment infobulle apparaissait, j'avais un retour à la ligne chaque fois que je devais avoir un espace.
Après meinte recherche j'ai trouvé cette solution qui n'apporte des modifications qu'au niveau CSS.

voilà les quatres lignes ajoutées :

height: auto;
width: auto;
white-space: nowrap;
display: inline;

et mon problème fut résolu.

Merci à toi pour cette source!

Commentaire de tofee le 10/12/2008 15:31:52

Bonjour

D'abord, bravo pour ce script, juste ce qu'il me faut et hyper facile à installer.
9/10 parce que ...

Petit souci pour faire fonctionner ce script :
- J'ai téléchargé et installé le tout
- mon code se présente ainsi
<code>
<div id="page">

<div id="entete">
le bandeau
</div><!--fin entete-->

<div id="carte" > (à gauche)
image de la carte
+ map avec liens
</div>

autre div à droite

</div>
</code>

Si je mets le div "curseur" juste avant le div "carte" -> ok pour FF mais infobulle décalée en haut et à droite sous IE7 comme le décrit Zeguizmo le 31/01.

Si je mets ce div "curseur" juste après le div "carte" -> ok pour IE7 mais problème inverse avec FF

Et je ne m'en sors pas.

Pour voir le souci, c'est ici :
http://localhost/Manas/

Une idée, une piste ?

PS: aucune connaissance en js, je copie-colle, c'est tout.

Commentaire de tofee le 10/12/2008 15:35:02

Oups, désolé pour le bruit

ma div "carte" avait un position:relative qui trainait d'un autre essai et qui foutait le bazar.

Donc 10/10 pour cette source !

Commentaire de alex3105 le 15/01/2009 19:49:33

salut mobman02

ton code est genial

j'ai fais qq modif (pour un min de mise en place et un max d'efficacité)
maintenant il est fin pret , merci :

exp de mise en place : hyper simple (meme pas d'utiliser onmouseout...)

<html>
...
<script> langage="javascript" src=bull.js></script> // tout est dans bull.js..
<p onmouseover=montre('Hello my world')> Bonjour mon monde </p>

et c tout !!

je poste la nouvelle version !!



Commentaire de infobarquee le 30/01/2009 18:20:40

bonjour et bravo pour ce script
je l'ai integre sur mon site en local et ca fonctionne impec avec IE et FF.
par contre comme avec d'autres scripts infobulle, j'ai un gros pb.
l'infobulle ne s'affiche pas du tout ou est masquee.
le server est sous unix, cela a t'il une incidence?
je ne comprend as du tout pourquoi, a moins d'une mauvaise interpretation du script par unix qui ne l'envoie pas sur le client.
merci de l'aide car il me manque que ca pour finaliser mon site.

Commentaire de mobman02 le 30/01/2009 18:23:51

Le script est parfaitement indépendant du serveur vu qu'il est interprété par le client (c'est le principe du Javascript).

Je pense plutôt à une erreur de mise en production, comme un chemin vers le Javascript mal défini ou ce genre de chose.

Commentaire de infobarquee le 30/01/2009 19:09:10

il ne peut y avoir d'erreur de chemin car il est integre dans ma page php.
voici le code php de ma page

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<title>Observation en temps reel</title>
<head>
<img src="france.png">
<style type="text/css">
.infobulle{
position: absolute;
visibility : hidden;
border: 1px solid Black;
padding: 10px;
font-family: Verdana, Arial;
font-size: 10px;
background-color: #FFFFCC;
}
</style>
<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>
</head>
<body bgcolor="#09D4F5" onload="window.setTimeout('history.go(0)',60000)">
<div id="curseur" class="infobulle"></div>

  <div style="position:absolute; left:800px top:0px; text-align:center;">
      <br/>
<a href="../" title="Retour aux observations">Retour aux observations</a><br/>
<a href="../writesingle.php" title="Ajouter une observation">Ajouter une observation</a><br/>
<a href="../inscription.php" title="Inscription aux observations">Pas encore inscrit?</a><br/><br/>
<img src="http://m.meteox.fr/images.aspx?jaar=-3&voor=&soort=loop3uur256&c=fr&n="width="200" height="200" title="Radar des précipitations"></img>
<img src="http://www.meteosuisse.ch/web/fr/meteo/temps_actuel/image_satellite.Par.0004.DownloadFile.ext.tmp/animation.gif" width="200" height="200" title="Animation satellite"></img><br/>

</div><br/>


<?php
$datej=date("d-m-y");
$heure=date("h");
$min=date("i");
echo"<div style='position:absolute; top:40px; left:530px;'><b>Date : ".$datej."<br/>Heure : ".$heure."h".$min." </b></div>";
//header('Content-type: image/png');

$point=imagecreatefrompng("point.png");
$carte=imagecreatefrompng("france.png");
    $minlong =  -5.1;
    $maxlong =  8.2;
    $minlat =  42.4;
    $maxlat =  51.1;

$largeur = 640;
$hauteur = 640;

//Taille des marges, nécessaire pour que les noms de ville ne soient pas coupés par les bords.
$margex = 20; //px
$margey = 20; //px

$link = mysql_connect("localhost","root","") or die('Connexion impossible.');
mysql_select_db("rsseditor") or die (mysql_error());

$result = mysql_query('SELECT *  FROM rsseditor_news WHERE valide = 1 order by date asc') or die ('Erreur : '.mysql_error() );



while ($arr = mysql_fetch_array($result))
{


//Converti lat/long en position sur l'image
$x = $margex + ($arr['longitude'] - $minlong) / ($maxlong - $minlong) * ($largeur - $margex * 2);
$y = $margey + (1-($arr['latitude'] - $minlat) / ($maxlat - $minlat)) * ($hauteur - $margey * 2);
$description = addslashes($arr['description']);
$title = addslashes($arr['title']);
$cp = addslashes($arr['cp']);
$date= addslashes($arr['date']);


echo "<div style='position:absolute; top:".$y."px; left:".$x."px; width:10px; height:10px; z-index:300;'><img src=\"point.jpg\" onmouseover=\"montre('<b>$date<br/>$title : $cp<br/>$description</b> ','white',event)\" onmouseout=\"cache()\"></div>" ;
}
mysql_close();

?>
</body>
</html>

Commentaire de profdestynova le 18/02/2009 02:06:34 8/10

Hello

Merci mobman02 pour ce petit script de rien du tout qui m'a fait gagner pas mal de temps, en effet : ]
Ca m'a permis de me dépêtrer de lourdeurs superflues dans le code d'une appli web que je refonds.
Voici un exemple de ce qu'on peut faire avec ton script (liens au bas du formulaire en page d'accueil).
Notez que la position de différents éléments merde sous IE mais j'ai la chance de pouvoir me passer de la compatibilité IE sur ce projet:
http://www.zalemlabs.com/exemples/exemple.html


Infobarquee, j'ai testé ton code en virant les appels BDD et avec une autre image et ça fonctionne bien hormis que la propriété z-index: 300 que tu colles sur le div en absolute contenant l'image où le passage de la souris doit afficher ton tooltip, masque le tooltip. Il te suffit de coller une propriété z-index supérieure, à la définition CSS .infobulle ex
z-index: 301;

Maintenant je ne sais pas quelle place prend taille.jpg chez toi mais vu la taille de son conteneur, elle doit pas être énorme, ce qui m'interroge sur l'effet de masquage que je décris :-k
D'ailleurs au passage, tu peux virer le div conteneur de ton image en appliquant les styles à la balise IMG ou mieux, en définissant une classe forçant le passage de ces images en blocs positionnés en absolu. Ex :

<img class="bidon" style=\"top:".$y."px; left:".$x."px;\" src=\"point.jpg\" onmouseover=\"montre('<b>$date<br/>$title : $cp<br/>$description</b> ','white',event)\" onmouseout=\"cache()\" />

avec
img.bidon {
  display: block;
  position: absolute;
  z-index: 300;
}

hmm ah oui aussi
Je ne comprends pas bien pourquoi tu ajoutes deux paramètres à l'appel de la fonction montre() dans le onmouseover de ton image, ça semble ne correspondre à rien dans ton code.

Commentaire de inwebo le 11/06/2009 13:29:19

Merci, j'en avais besoin, la flemme de coder.

Commentaire de stella2809 le 09/10/2009 14:37:27

salut la source est vieille mais trés bien tout de même, pour la compatibilité I.E8 c'est possible de "rafistoler" plutot que de balancer une <meta http-equiv="X-UA-Compatible" content="IE=7" /> ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

bug info bulle [ par ntfree ] voila, c tt simple, g chopé le script info bulle de ce site.mais le probleme, c'est ke maintenant, il est impossible de selectionner du texte sur le s PB avec INFO BULLE [ par renaud1102 ] Bonjour,J'ai un formulaire, et quand je passe le curseur de ma souris sur un des liens, l'info bulle apparait sous les cases du formulaire. Donc je ne problème affichage info bulle [ par _lolo ] Bonjour,Voilà j'ai récupéré un p'tit script pour faire de belles infos bulles :)Malheureusement les infos bulles qui apparaissent dans le menu droit d info bulle [ par fixou47 ] Bonjour à touscomment pouvoir mettre plusieurs lignes dans une info bulle ?du type : ordre du jour -approbations une info bulle qd je survole une checkbox [ par adilou1981 ] bonjour je voudrais savoir quel script permet d'afficher une info bulle qd le curseur passe dessus une case &#224; cocher merci info bulle [ par adilou1981 ] bonjour je voudrais savoir quel script permet d'afficher une info bulle qd le curseur passe dessus une case &#224; cocher merci info bulle dans un select [ par corback ] Bonjour, J'utilise actuellement un select contenant une liste d'options. Le probl&#232;me est que la taille de mon select est fixe et que le contenu Info bulle avec récupération de valeur php? [ par Monico9385 ] Bonjour, j'aimerai cr&#233;er une info bulle au survol d'un lien avec dans cet info des valeurs &#224; r&#233;cup&#233;rer en php, sauf que je n'ai a Comment changer une info bulle texte en info bulle image ? help svp [ par westernz ] Bonjour, J'ai recuperer ce qui semble etre le meilleur code d'info bulle (sans bug de scroll ou autre). Seulement je cherche (depuis deja pas mal de slectmultiple et infobulle [ par goulouk ] Bonjour,Je vous expose mon prolblème :J'ai un select multiple et je voudrais qu'au passage de la sourie sur une des options du select avoir une info b


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales