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

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

JavaScript Discussion :

InfoBulle dans un: echo "<a href=


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    314
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 314
    Par d�faut InfoBulle dans un: echo "<a href=
    Mon code:
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
         echo "<a href='".$Variable[$i][9]."' target='_blank'
    	 onmousemove='infoBulle('".$Variable[$i][9]."')'
    	 onmouseout='hideBulle()'>";
    	 $Dimensions = getimagesize($Image);
    	 include("../REDIMENSIONNEMENT/Redimensionnement_.php");
    	 $Sequence = 1;
    	 $Dimensions = Redimensionnement_($Dimensions,$Sequence);
    	 echo "<img id='Variable06R00' src='".$Image."' border='0' width='".$Dimensions[0]."' height='".$Dimensions[1]."' alt=''></img>";
    	 echo "</a><br/><br/>";
    J'achoppe sur l'affichage de mon InfoBulle.

  2. #2
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Salut,

    tu as un probl�me de guillemets ici :
    �a arrive fr�quemment quand on m�lange les codes de diff�rents langages, en l�occurence PHP, HTML et JS.

    Tu peux voir facilement le probl�me en examinant le code HTML de la page (Ctrl+U), ou avec l�inspecteur des outils de d�veloppement (F12) de tout navigateur.

    Une premi�re fa�on de limiter les probl�mes de guillemets est d�utiliser la syntaxe heredoc :
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $Dimensions = getimagesize($Image);
    require_once '../REDIMENSIONNEMENT/Redimensionnement_.php';
    $Sequence = 1;
    $Dimensions = Redimensionnement_($Dimensions, $Sequence);
    echo <<<GROSECHO
      <a href="{$Variable[$i][9]}" target="_blank"
          onmousemove="infoBulle('{$Variable[$i][9]}')"
          onmouseout="hideBulle()">
        <img id="Variable06R00" src="$Image" border="0" width="{$Dimensions[0]}" height="{$Dimensions[1]}" alt=""></img>
      </a>
      <br/><br/>
    GROSECHO;

    Une fa�on plus � durable �, au sens de plus facile � maintenir, est de s�parer les couches HTML et JS, donc supprimer les attributs d��v�nements (onmousemove, etc.) et de les remplacer par des gestionnaires d��v�nement directement dans le code JS.
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
      <a href="{$Variable[$i][9]}" target="_blank"
          onmousemove="infoBulle('{$Variable[$i][9]}')"
          onmouseout="hideBulle()" >
    Code JS : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    var lien = … // réfléchir à un moyen de sélectionner le rien
    lien.addEventListener('mousemove', function (event) {
      infobulle(this.href);
    });
    lien.addEventListener('mouseout', function (event) {
      hidebulle();
    });

    Si je ne t�ai pas donn� directement le code de s�lection du lien c�est parce que je remarque que ton bout de code fait probablement partie d�une boucle, � en juger par la pr�sence de cette variable $i. Et dans cette boucle tu g�n�res une image avec un id. Par cons�quent tu vas te retrouver avec plusieurs images portant le m�me id dans ta page, et c�est une situation qu�il vaut mieux �viter.

    Si cet id te permet d�ajouter du style � l�image, il te suffit de le changer en classe, et de changer les d�clarations CSS #Variable06R00 en .Variable06R00. Mais si tu as r�ellement besoin de cibler l�image pr�cise par son id, il suffit de rajouter une partie variable � l�attribut id, par exemple $i, comme ceci :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
        <img id="Variable06R00_$i" src="$Image" border="0" width="{$Dimensions[0]}" height="{$Dimensions[1]}" alt=""></img>

    Pour en revenir � la s�lection du lien, le probl�me est qu�il y a en fait plusieurs liens. Je te sugg�re de leur ajouter une classe, par exemple lien-infobulle. Ensuite tu as deux solutions.

    La premi�re solution est de faire une boucle pour ajouter les gestionnaires d��v�nements � chaque lien :
    Code js : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var liens = document.querySelectorAll('.lien-infobulle');
    for (var i = 0, len = liens.length; i < len; i++) {
      liens[i].addEventListener('mousemove', function (event) {
        infobulle(this.href);
      });
      liens[i].addEventListener('mouseout', function (event) {
        hidebulle();
      });
    }

    La seconde est de d�l�guer la gestion d��v�nement, � l��l�ment qui contient tous les liens. Je vais supposer qu�il a un id #container.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var container = document.querySelector('#container');
     
    container.addEventListener('mousemove', function (event) {
      var target = event.target;
      if (target.className.indexOf('lien-infobulle') > -1) {
        infobulle(target.href);
      }
    });
    container.addEventListener('mouseout', function (event) {
      var target = event.target;
      if (target.className.indexOf('lien-infobulle') > -1) {
        hidebulle();
      }
    });
    Bien s�r j��cris tout �a en vanilla (sans framework), mais tu as l�id�e g�n�rale. Si tu utilises un framework (par exemple jQuery), je pense qu�il ne te sera pas difficile de r��crire mon code � la mani�re de ce framework.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    F�vrier 2008
    Messages
    314
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 314
    Par d�faut
    D�butant en JavaScript, j'avoue que pour un probl�me d'urgence, de compr�hension et de facilit� j'utiliserai la premi�re solution en attendant de m'attaquer � la 2�me.
    J'ai donc appliqu� la solution ' echo <<<GROSECHO ', celui-ci fonctionne et la redirection s'effectue mais mon InfoBulle ne s'affiche toujours pas:
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $Dimensions = getimagesize($Image);
    include("../REDIMENSIONNEMENT/Redimensionnement_.php");
    $Sequence = 1;
    $Dimensions = Redimensionnement_($Dimensions,$Sequence);
    echo <<<GROSECHO
    	<a href="{$Variable[$i][9]}" target="_blank"
    		onmousemove="infoBulle('{$Variable[$i][9]}')"
    		onmouseout="hideBulle()">
    		<img id="Variable06R00" src="$Image" border="0" width="{$Dimensions[0]}" height="{$Dimensions[1]}" alt=""></img>
    	</a><br/><br/>GROSECHO;
    Si je remplace
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onmousemove="infoBulle('{$Variable[$i][9]}')"
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onmousemove="infoBulle('Ceci est mon InfoBulle')"
    alors l'InfoBulle s'affiche.

  4. #4
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjour,
    tu n'as pas suivi les instructions du professeur Watilin � savoir
    Tu peux voir facilement le probl�me en examinant le code HTML de la page (Ctrl+U), ou avec l�inspecteur des outils de d�veloppement (F12) de tout navigateur.
    et tu as incompl�tement lu son lien
    Une premi�re fa�on de limiter les probl�mes de guillemets est d�utiliser la syntaxe heredoc :
    qui indique en substance
    Avertissement Il est tr�s important de noter que la ligne contenant l'identifiant de fin ne doit contenir aucun autre caract�re, mis � part un point-virgule (;). Cela signifie en particulier que l'identifiant ne doit pas �tre indent�, et qu'il ne doit y avoir aucun espace ou tabulation avant ou apr�s le point-virgule.

Discussions similaires

  1. Afficher double quote " dans un echo
    Par Xenon03 dans le forum Langage
    R�ponses: 3
    Dernier message: 02/09/2009, 10h36
  2. echo dans un echo
    Par clovis200 dans le forum Langage
    R�ponses: 13
    Dernier message: 10/06/2006, 15h35
  3. Signification \t dans fonction echo ou print
    Par webrider dans le forum Langage
    R�ponses: 2
    Dernier message: 08/06/2006, 13h44
  4. [Tableaux] Code PHP dans un echo
    Par flOZ dans le forum Langage
    R�ponses: 7
    Dernier message: 24/05/2006, 09h40
  5. probleme avec " dans un echo
    Par Death83 dans le forum Langage
    R�ponses: 2
    Dernier message: 19/10/2005, 11h11

Partager

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