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 :

Récupérer une variable à l'aide d'un OnMouseOver


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Par défaut Récupérer une variable à l'aide d'un OnMouseOver
    Bonjour,

    J'ai un problème qui me parait épineux, mais pas irréalisable pour quelqu'un qui connait bien le javascript (c est a dire pas moi) donc bref je cherche de l'aide! Si quelqu'un peut m aider je lui en serais tres reconnaissant!

    Je vous explique mon probleme!
    Je crée une page html a l'aide d'un script php
    Ce script php fait appel a des fichiers .tpl pour créer les différentes parties html!
    L'un de ses TPL sert a faire apparaitre les images en mignatures
    Le but de mon script est de faire un agrandissement lors d'un OnMouseOver, j'ai récupéré une fonction javascript, elle marche tres bien!
    J'ai donc incorporé cette fonction dans mon script tpl entre deux balises literal afin que le serveur les interpretes comme etant du script et non pas du tpl!

    Lorsque la page est générée, tout se passe bien a un détail près le fait qu'il y ait plusieurs miniatures sur la page, et le fait que le javascript soit interprété avant le tpl fait que les données relatives a la premiere miniature sont effacées par la seconde, et ainsi de suite! bref au final j ai l'image de la derniere photo presente en grand sur chaque miniature!

    Je cherche donc une autre solution (si quelqu'un a je prend aussi! )
    J'ai pensé a récupérer dynamiquement les valeurs de la miniature sur laquelle est la souris et donc d'afficher dans ce cas la, la photo correspondante a cette miniature. Ca a l air bien comme ca, mais aucune idée de comment faire?
    Il y a une fonction javascript qui permet de récupérer dynamiquement l'url de l'image sur laquelle on est?
    Je vous remercie grandement si vous avez une idée ou encore mieux une solution à m apporter!!!


    Fonction javascript + <img>

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
     
    {* $Id: product_thumbnail.tpl,v 1.8.2.1 2003/05/20 13:32:38 svowl Exp $ *}
     
    {literal}
     
    		<script type="text/javascript">
     
    /***********************************************
    * Image w/ description tooltip- By Dynamic Web Coding (<a href="http://www.dyn-web.com" target="_blank">www.dyn-web.com</a>)
    * Copyright 2002-2007 by Sharon Paine
    * Visit Dynamic Drive at <a href="http://www.dynamicdrive.com/" target="_blank">http://www.dynamicdrive.com/</a> for full source code
    ***********************************************/
     
    /* IMPORTANT: Put script after tooltip div or
    	 put tooltip div just before </BODY>. */
     
    var dom = (document.getElementById) ? true : false;
    var ns5 = (!document.all && dom || window.opera) ? true: false;
    var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
    var ie4 = (document.all && !dom) ? true : false;
    var nodyn = (!ns5 && !ie4 && !ie5 && !dom) ? true : false;
     
    var origWidth, origHeight;
     
    // avoid error of passing event object in older browsers
    if (nodyn) { event = "nope" }
     
    ///////////////////////  CUSTOMIZE HERE   ////////////////////
    // settings for tooltip
    // Do you want tip to move when mouse moves over link?
    var tipFollowMouse= true;	
    // Be sure to set tipWidth wide enough for widest image
    var tipWidth= 360;
    var offX= 20;	// how far from mouse to show tip
    var offY= 12;
    var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
    var tipFontSize= "8pt";
    // set default text color and background color for tooltip here
    // individual tooltips can have their own (set in messages arrays)
    // but don't have to
    var tipFontColor= "#747170";
    var tipBgColor= "#F5F5F5";
    var tipBorderColor= "#9A9A9A";
    var tipBorderWidth= 1;
    var tipBorderStyle= "";
    var tipPadding= 0;
     
    // tooltip content goes here (image, description, optional bgColor, optional textcolor)
    var messages = new Array();
    // multi-dimensional arrays containing:
    // image and text for tooltip
    // optional: bgColor and color to be sent to tooltip
     
    messages[0] = new Array('../imagelarge.php?productid={/literal}{$productid}{literal}','<center>{/literal}{$product}{literal}</center>');
     
    ////////////////////  END OF CUSTOMIZATION AREA  ///////////////////
     
    // preload images that are to appear in tooltip
    // from arrays above
    if (document.images) {
    	var theImgs = new Array();
    	for (var i=0; i<messages.length; i++) {
      	theImgs[i] = new Image();
    		theImgs[i].src = messages[i][0];
      }
    }
     
    // to layout image and text, 2-row table, image centered in top cell
    // these go in var tip in doTooltip function
    // startStr goes before image, midStr goes between image and text
    var startStr = '<table width="'+ tipWidth +'"><tr><td align="center" width="100%"><img src="';
    var midStr = '" border="0"></td></tr><tr><td valign="top">';
    var endStr = '</td></tr></table>';
     
    ////////////////////////////////////////////////////////////
    //  initTip	- initialization for tooltip.
    //		Global variables for tooltip.
    //		Set styles
    //		Set up mousemove capture if tipFollowMouse set true.
    ////////////////////////////////////////////////////////////
    var tooltip, tipcss;
    function initTip() {
    	if (nodyn) return;
    	tooltip = (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
    	tipcss = tooltip.style;
    	if (ie4||ie5||ns5) {	// ns4 would lose all this on rewrites
    		tipcss.width = tipWidth+"px";
    		tipcss.fontFamily = tipFontFamily;
    		tipcss.fontSize = tipFontSize;
    		tipcss.color = tipFontColor;
    		tipcss.backgroundColor = tipBgColor;
    		tipcss.borderColor = tipBorderColor;
    		tipcss.borderWidth = tipBorderWidth+"px";
    		tipcss.padding = tipPadding+"px";
    		tipcss.borderStyle = tipBorderStyle;
    	}
    	if (tooltip&&tipFollowMouse) {
    		document.onmousemove = trackMouse;
    	}
    }
     
    window.onload = initTip;
     
    /////////////////////////////////////////////////
    //  doTooltip function
    //			Assembles content for tooltip and writes
    //			it to tipDiv
    /////////////////////////////////////////////////
    var t1,t2;	// for setTimeouts
    var tipOn = false;	// check if over tooltip link
    function doTooltip(evt,num) {
    	if (!tooltip) return;
    	if (t1) clearTimeout(t1);	if (t2) clearTimeout(t2);
    	tipOn = true;
    	// set colors if included in messages array
    	if (messages[num][2])	var curBgColor = messages[num][2];
    	else curBgColor = tipBgColor;
    	if (messages[num][3])	var curFontColor = messages[num][3];
    	else curFontColor = tipFontColor;
    	if (ie4||ie5||ns5) {
    		var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
    		tipcss.backgroundColor = curBgColor;
    	 	tooltip.innerHTML = tip;
    	}
    	if (!tipFollowMouse) positionTip(evt);
    	else t1=setTimeout("tipcss.visibility='visible'",100);
    }
     
    var mouseX, mouseY;
    function trackMouse(evt) {
    	standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
    	mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
    	mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
    	if (tipOn) positionTip(evt);
    }
     
    /////////////////////////////////////////////////////////////
    //  positionTip function
    //		If tipFollowMouse set false, so trackMouse function
    //		not being used, get position of mouseover event.
    //		Calculations use mouseover event position,
    //		offset amounts and tooltip width to position
    //		tooltip within window.
    /////////////////////////////////////////////////////////////
    function positionTip(evt) {
    	if (!tipFollowMouse) {
    		standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
    		mouseX = (ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
    		mouseY = (ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
    	}
    	// tooltip width and height
    	var tpWd = (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
    	var tpHt = (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
    	// document area in view (subtract scrollbar width for ns)
    	var winWd = (ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
    	var winHt = (ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;
    	// check mouse position against tip and window dimensions
    	// and position the tooltip
    	if ((mouseX+offX+tpWd)>winWd)
    		tipcss.left = mouseX-(tpWd+offX)+"px";
    	else tipcss.left = mouseX+offX+"px";
    	if ((mouseY+offY+tpHt)>winHt)
    		tipcss.top = winHt-(tpHt+offY)+"px";
    	else tipcss.top = mouseY+offY+"px";
    	if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
    }
     
    function hideTip() {
    	if (!tooltip) return;
    	t2=setTimeout("tipcss.visibility='hidden'",100);
    	tipOn = false;
    }
     
    document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')
     
    </script>
     
    {/literal}
     
    {if $config.Appearance.show_thumbnails eq "Y"} <img src="{if $tmbn_url}{$tmbn_url}{else}{if $full_url}{$http_location}{else}..{/if}/image.php?productid={$productid}{if $file_upload_data.file_path}&tmp=y{/if}{/if}"{if $image_x ne 0} onmouseover="doTooltip(event,0)" onmouseout="hideTip()" class=ThumbDisplay width={$image_x}{/if}{if $image_y ne 0} height={$image_y}{/if} alt="{$product}" border=0>{/if}

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Ce que tu cherches à réaliser ressemble à ceci, non ?

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Par défaut
    Oui voila!
    J ai deja le script javascript pour afficher les pages, mais comme elles sont crées automatiquement, je ne parviens pas à différencier mon script pour la premiere photo de la page, de celui pour la derniere! (vu qu elles sont créées a partir de la meme page tpl dans laquelle il y a donc la meme page javascript!)
    Donc je cherche sur le OnMouseOver, j ai deja trouvé une solution, en utilisant this.src et this.alt mais si tu as une proposition plus intéressante, je suis preneur!!
    Merci de ton aide!

    Chamalo

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    le code source de la démo :
    http://sonspring.com/files/hoverbox.zip

    En fait, tout dépend de la méthode que tu veux utiliser : Soit tu as des miniatures réalisées avec PHP à partir des images originales et dans ce cas, tu as 2 images (la miniature + l'image originale), soit tu n'as que l'image originale que tu l'affiches en plus petite en modifiant uniquement les dimensions d'affichage et dans ce cas, la qualité des miniatures est moins bonne mais c'est plus simple à mettre en oeuvre...

  5. #5
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Par défaut

    Je crois que c est exactement ce qu'il me faut! le script que j avais avant est beaucoup plus compliqué a mettre en place que celui la!!
    Tu geres!!! Merci beaucoup!

    Chamalo

  6. #6
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 13
    Par défaut
    ca marche impeccable sous firefox, mais sous internet explorer et opera ca m affiche les deux images simulatanément.... haaaaaaaaaaaaa!!!
    J y connais rien en CSS comment je peux rectifier ca?

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/01/2012, 16h52
  2. [Ant] Récupérer une variable d'envionnement
    Par lionel69 dans le forum ANT
    Réponses: 4
    Dernier message: 25/01/2007, 10h22
  3. [Applet] récupérer une variable PHP ?
    Par Shiryu44 dans le forum Applets
    Réponses: 10
    Dernier message: 22/03/2005, 11h39
  4. [JSTL] Récupérer une variable du style <%String bob = "bobby"%>
    Par nickoshiba dans le forum Taglibs
    Réponses: 2
    Dernier message: 15/03/2005, 08h50
  5. récupérer une variable
    Par boucher_emilie dans le forum ASP
    Réponses: 9
    Dernier message: 05/07/2004, 10h34

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