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 :

Ouverture popup au survol de la souris


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Ouverture popup au survol de la souris
    Bonjour. Etant étudiante en master informatique, je développe un projet d'annotation de pages web. Le langage utilisé est javascript.
    J'aurai aimer pouvoir ajouter une popup qui s'ouvre quand on survole une partie d'un texte qui est annoté. Cependant je n'arrive pas à écrire le code correspondant en javascript.
    Si quelqu'un peut m'aider, ça serait cool, car la je bloque complètement. Merci d'avance.

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour a toi, moi je suis etudiant en 1er année d'IUT info lol
    Bon alors voici ce que je te propose, c'est donc une sorte d'infobulle

    Voici le code JS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    function affichage_bulle(current,e,cote,text)
    {
    	var largeur = 50;
    	var hauteur = 20;
    	if(cote == 'l') {
    		largeur = - largeur * 3;
    	}
    	text = text.replace(/&lt;/gi,'<');
    	text = text.replace(/&gt;/gi,'>');
    	if(document.all) {
    		if(document.readyState == 'complete') {
    			document.all.bulle.innerHTML = text;
    			document.all.bulle.style.pixelLeft = event.clientX + document.body.scrollLeft + largeur;
    			document.all.bulle.style.pixelTop = event.clientY + document.body.scrollTop + hauteur;
    			document.all.bulle.style.visibility = 'visible';
    		}
    	}
    	else if(document.getElementById) {
    		document.getElementById('bulle').innerHTML = text;
    		document.getElementById('bulle').style.left = e.pageX + largeur + 'px';
    		document.getElementById('bulle').style.top = e.pageY + hauteur + 'px';
    		document.getElementById('bulle').style.visibility = 'visible';
    	}
    }
     
    function cache_bulle() {
    	if(document.all)
    		document.all.bulle.style.visibility = 'hidden';
    	else if(document.layers)
    		document.bulle.visibility = 'hidden';
    	else if(document.getElementById)
    		document.getElementById('bulle').style.visibility = 'hidden';
    }
    Et pour le html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <div id="bulle" class="bulle"></div>
    <a href="#" onmouseover="affichage_bulle(this,event,'r','truc a mettre dans la bulle');" onmouseout="cache_bulle();">Lien</a>
    A toi d'adapter

    Edit: j'ai oublié de preciser meme si tu l'aurais trouvé sans doute
    function affichage_bulle(current,e,cote,text)
    current c'est le conteneur d'appel, e c'est l'evenement, r c'est pour la postion right ou left et text c'est le texte lol

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    la <table> n'a pas d'intérêt ici. on se sert des <div> pour ce genre de chose

    au fait, faut-il obligatoirement un popup (question d'origine) ou un tooltip est envisageable (un peu comme dans la réponse prédédente) ?

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Oui oui tout à fait méacoulpa lol c'est un code ressortit du placard! Et oui il faut remplacé la table par un div bien entendu

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    genre. un petit source développé il y a quelques semaines
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Et voila fini la table

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Le problème est que je travaille sous mozilla. Et la plupart des fonctions ne sont pas reconnues. Exemple : event.clientX, clienY ne fonctionne pas.

    Je ne sais plus quoi faire, on a un réel problème de positionnement de la fenetre.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 234
    Points : 172
    Points
    172
    Par défaut
    Pour pouvoir récupérer un evenement sous tous les navigateurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function event(event){
         event = event || window.event;
    }
    Essaie avec pageX et pageY aussi. Voila un lien pas mal sur un bon code javascript (qui est un exemple pour pas mal de chose) :
    http://www.webreference.com/programm...mn2/index.html

  9. #9
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par Didine981
    Le problème est que je travaille sous mozilla. Et la plupart des fonctions ne sont pas reconnues. Exemple : event.clientX, clienY ne fonctionne pas.

    Je ne sais plus quoi faire, on a un réel problème de positionnement de la fenetre.
    preuve que tu n'as pas regardé mon code (qui fonctionne sous IE, FF, Mozilla, etc...)

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Petit bug de ton code bigboomshakala.

    Sous FF 3.0.3, l'affichage du tooltip se fait en 0, 0 du fait qu'il manque "px" dans le style que tu affecte à la "bulle" ce qui provoque une erreur d'interprétation.

    voici la version corrigée de la function tt_show

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function tt_show(texte,classe)
    {
    	var contenu = texte;
      var finalPosX = tt_posX;
      if (finalPosX<0) finalPosX=0;
     
      tt_getEltById("bulle").className = 'tt_abs ' + (typeof classe == 'undefined' ? 'tt_default' : classe);
     
      if (document.layers)
      {
        tt_getEltById("bulle").document.write(contenu);
       	tt_getEltById("bulle").document.close() + "px";
        tt_getEltById("bulle").top = tt_posY + tt_yOffset +"px";
        tt_getEltById("bulle").left= finalPosX;
        tt_getEltById("bulle").visibility="show";
      }
      else
      {
       	tt_getEltById("bulle").innerHTML = contenu;
        tt_getEltById("bulle").style.top = tt_posY + tt_yOffset +"px";
        tt_getEltById("bulle").style.left = finalPosX + "px";
        tt_getEltById("bulle").style.visibility="visible";
      }
    }

  11. #11
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    effectivement, merci.
    cependant tu as ajouté un "px" derrière un close() et oublié un "px" ailleurs.
    je repeaufine le source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function tt_show(texte,classe)
    {
    	var contenu = texte;
      var finalPosX = tt_posX;
      if (finalPosX<0) finalPosX=0;
     
      tt_getEltById("bulle").className = 'tt_abs ' + (typeof classe == 'undefined' ? 'tt_default' : classe);
     
      if (document.layers)
      {
        tt_getEltById("bulle").document.write(contenu);
       	tt_getEltById("bulle").document.close();
        tt_getEltById("bulle").top = tt_posY + tt_yOffset +"px";
        tt_getEltById("bulle").left= finalPosX + "px";
        tt_getEltById("bulle").visibility="show";
      }
      else
      {
       	tt_getEltById("bulle").innerHTML = contenu;
        tt_getEltById("bulle").style.top = tt_posY + tt_yOffset +"px";
        tt_getEltById("bulle").style.left = finalPosX + "px";
        tt_getEltById("bulle").style.visibility="visible";
      }
    }

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    bonjour et merci bigboomshakala et Radical pour ce parfait petit source, c'est exactement ce que je cherchais!
    ah j'aime Internet et ses forums!
    bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Survol souris d'une image (ouverture popup)
    Par rMzz29 dans le forum WinDev
    Réponses: 1
    Dernier message: 22/02/2012, 15h41
  2. Connaitre le Composant survolé avec la souris
    Par Hauwke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/10/2005, 19h22
  3. Etiquette sur survol de la souris (mouseover)
    Par Philofish dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/08/2005, 11h06
  4. Ouverture popup
    Par valerie90 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/04/2005, 23h16
  5. Réponses: 3
    Dernier message: 09/08/2004, 12h24

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