Tom's Guide > Forum > Programmation > [PHP] Aide pour lien dans un title

[PHP] Aide pour lien dans un title

Forum Programmation : [PHP] Aide pour lien dans un title

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour a tous,
Je fait actuellement une map pour un jeux,
Tout fonctionne, mais j'aurai besoins d'un petit coup de main, pour mettre un lien dedan
Pour info, j'ai creer une info bulle (tooltip nn?), qui me marque les coordoné de lemplacement si la case est vide, et le pseudo si la case est habité,
Je voudrai ajouté un lien genre, Ataquer, qui se trouve dans l'info bulle, donc dans le tittle,
Code actuel :

Code :
  1. if(empty($carto[$x][$y]['id'])) { //Case vide
  2. ?><a<img src="style/image/herbe20.png" width="20" height="20" title="(<? print $x.':'.$y; ?> )"></img><?
  3. } else { //Case occupée
  4. ?><img src="style/image/ruche20.png" width="20" height="20" title="<? print $carto[$x][$y]['pseudo'].'('.$x.':'.$y; ?> )"></img><?
  5. }

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Alors en fait il ne faut pas utiliser le title, mais plutot un javascript qui va creer un bloc affiché à côté de ta souris, dans lequel tu va avoir tes liens...
Essaye de regarder sur des site de scripts et/ou cours en javascript

Répondre à xaebhal

En effet, le title est pas forcément pratique, et met quelques secondes à apparaitre.
De plus, il me semble qu'IE ne lit pas les title par défaut, mais lit les alt. Donc faudrait mettre et alt, et title.
Bref...

Le plus simple serait de regarder au niveau de tooltips à faire soi-même, comme indiqué par xaebhal.
Regarde dans google avec une recheche "tooltip", tu devrais avoir ce que tu veux je pense. Tu dois pouvoir trouver beaucoup de scripts différents.

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

Voila, apparement, il faudrait modifié mon fichier bulle.js

Que dois-je rajouter pour mettre un lien dans cette info bulle :)

Code :
  1. addEvent(window, "load", initialiserBulles);
  2. var lesBalises = new Array;
  3. lesBalises[0] = "a";
  4. lesBalises[1] = "img";
  5. lesBalises[2] = "b";
  6. lesBalises[3] = "p";
  7. var XHTMLNS = "http://www.w3.org/1999/xhtml";
  8. var CURRENT_NICE_TITLE;
  9. function initialiserBulles() {
  10.   if (!document.createElement || !document.getElementsByTagName) return;
  11.   // add namespace methods to HTML DOM; this makes the script work in both
  12.   // HTML and XML contexts.
  13.   if(!document.createElementNS){
  14.     document.createElementNS = function(ns,elt) {
  15.       return document.createElement(elt);
  16.     }
  17.   }
  18.   for(var i = 0; i < lesBalises.length; i++){
  19.     var balises = document.getElementsByTagName(lesBalises[i]);
  20.     for (var ti = 0; ti < balises.length ; ti++) {
  21.       var balise = balises[ti];
  22.       if (balise.title) {
  23.         ajouterBulle(balise);
  24.       }
  25.     }
  26.   }
  27. }
  28. function ajouterBulle(elem){
  29.   elem.setAttribute("bulle",elem.title);
  30.   elem.removeAttribute("title" );
  31.   // on ajoute des evenements sur le lien
  32.   addEvent(elem,"mouseover",montrerBulle);
  33.   addEvent(elem,"mouseout",cacherBulle);
  34.   addEvent(elem,"focus",montrerBulle);
  35.   addEvent(elem,"blur",cacherBulle);
  36. }
  37. function donnePosition(oLink) {
  38.   if( oLink.offsetParent ) {
  39.     for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) {
  40.       posX += oLink.offsetLeft;
  41.       posY += oLink.offsetTop;
  42.     }
  43.     return [ posX, posY ];
  44.   } else {
  45.     return [ oLink.x, oLink.y ];
  46.   }
  47. }
  48. function montrerBulle(e) {
  49.   // si c'est le titre est déjà rempli on le cache
  50.     if (CURRENT_NICE_TITLE) cacherBulle(CURRENT_NICE_TITLE);
  51.     var elem;
  52.     if (window.event && window.event.srcElement) {
  53.         elem = window.event.srcElement
  54.     } else if (e && e.target) {
  55.         elem = e.target
  56.     }
  57.     var _textBulle = elem.getAttribute("bulle" );
  58.     if(_textBulle.charAt(0) == '$'){
  59.       _textBulle = eval(_textBulle.substring(1));
  60.     } else {
  61.       _textBulle = "<p>" + _textBulle + "</p>";
  62.     }
  63.     // on ajoute à une div un noeud de texte contenant ce qu'il faut
  64.     var d = document.createElementNS(XHTMLNS,"div" );
  65.     d.className = "bulle";
  66.     d.innerHTML = _textBulle;
  67.     d.style.position = 'absolute';
  68.     mpos = donnePosition(elem);
  69.     mx = mpos[0];
  70.     my = mpos[1];
  71.     d.style.left = (mx + 15) + 'px';
  72.     d.style.top = (my + 35) + 'px';
  73.     var largeurDiv = d.width;
  74.     if (window.innerWidth && ((mx+largeurDiv) > window.  innerWidth)) {
  75.         d.style.left = (window.innerWidth - largeurDiv - 25) + "px";
  76.     }
  77.     if (document.body.scrollWidth && ((mx + largeurDiv) > document.body.scrollWidth)) {
  78.         d.style.left = (document.body.scrollWidth - largeurDiv - 25) + "px";
  79.     }
  80.    
  81.     document.getElementsByTagName("body" )[0].appendChild(d);
  82.    
  83.     CURRENT_NICE_TITLE = d;
  84. }
  85. function cacherBulle(e) {
  86.     if (!document.getElementsByTagName) return;
  87.     if (CURRENT_NICE_TITLE) {
  88.         document.getElementsByTagName("body" )[0].removeChild(CURRENT_NICE_TITLE);
  89.         CURRENT_NICE_TITLE = null;
  90.     }
  91. }
  92. // Add an eventListener to navigateurs that can do it somehow.
  93. // Originally by the amazing Scott Andrew.
  94. function addEvent(obj, evType, fn){
  95.   if (obj.addEventListener){
  96.     obj.addEventListener(evType, fn, true);
  97.     return true;
  98.   } else if (obj.attachEvent){
  99.   var r = obj.attachEvent("on"+evType, fn);
  100.     return r;
  101.   } else {
  102.   return false;
  103.   }
  104. }


Message édité par portos_man59 le 08-09-2007 à 21:26:41
Répondre à portos_man59

BAh non, tu as déjà un truc de bulles, donc c'est bon, je pensais que tu faisais tes bulles juste avec le "title", sauf que là, ta bulle récupère la valeur de title, et la met dans une bulle, donc ça devrait le faire :)

Par contre, est-ce que ton infobulle acceptera les liens ? je ne sais pas, essaie de mettre du code HTML dans ton attribut title
Comme ça par exemple : title="<a href='alert(\'test\');'>click</a>"

------------------------------ Les dessins des seins ou les desseins des saints ?
Répondre à OmaR

Parfait, mais dans lifno bulle ya un truc bizare, fin 2 :)

Alors, deja ya une petite image sans lien qui s'affiche :

http://i23.servimg.com/u/f23/09/03/11/50/bb10.jpg

Et deux 2 ya un pb dans mon code js, qui m'empeche de cliké dessus, si je met mon pointeur de la bulle, elle s'en va



i

Code :
  1. f(empty($carto[$x][$y]['id'])) { //Case vide
  2.     ?><a<img src="style/image/herbe20.png" width="20" height="20" title="(<? print $x.':'.$y; ?> )"></img><?
  3.   } else { //Case occupée
  4.     ?><img src="style/image/ruche20.png" width="20" height="20" title="<? print $carto[$x][$y]['pseudo'].'('.$x.':'.$y; ?> )<br><a href='alert(\'test\');'>click</a></img><?
  5.   }

Répondre à portos_man59

alors deja je ne pense pas que tu puisse mettre 'alert(\'test\') dans l'attribut href de ton lien, tout simplement parce que c'est du javascript

A la place essaye OnClick="alert('test');"

Ensuite je pense que quand tu vas sur ta bulle, tu sors de la case ou tu étais, et donc celle ci s'efface. Essaye de modifier les conditions qui font s'effacer la bulle

Répondre à xaebhal

déja, avant de faire du javascript ou php, fini d'apprendre le html car :

<a<img src="style/image/herbe20.png" width="20" height="20" title="(<? print $x.':'.$y; ?> )"></img>

ca existe pas !

Répondre à okinou

Deja, sa c'est deja corrigé, la alert aussi marche,
Je code pas javascrit, donc je sais pas modifié les conditions

Répondre à portos_man59
Tom's Guide > Forum > Programmation > [PHP] Aide pour lien dans un title
Aller à :

Il y a 290 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens