Se connecter avec
S'enregistrer | Connectez-vous

[PHP] Aide pour lien dans un title

Dernière réponse : dans Programmation

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 :

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

Autres pages sur : php aide lien title

Lassé par la pub ? Créez un compte

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
Expert Programmation

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.

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

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

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

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

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

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



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

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
Lassé par la pub ? Créez un compte
Tom's guide dans le monde