Je cherche à implémenter la fonction suivante:
Pour les liens html je souhaite voir apparaitre un tooltip qui lui meme va contenir deux ou trois autre liens (présenté en menu vertical, mais ca c'est un détail) . Cela constitue une ergonomie multiliens.
Je suis déjà surpris de n'avoir pas trouvé cette fonctionnalité sur le web tant elle me parrait évidente... (j'ai peut-etre mal cherché, si vous avez du code tout fait je suis aussi preneur, je déteste réinventer la poudre).
Le code que j'ai devellopé marche à moitié . (j'avoue j'ai pris le code javascript tooltip ailleurs).
Lorsque la souris passe sur le lien le menu apparait à peu près bien et le menu fonctionne, les liens contenus dans le menu aussi. Mais si la souris quitte la zone du lien , ca se passe parfois bien, parfois mal. (le menu-tooltip se promène ou ne disparait pas).
Je ne suis pas expert en javascript et j'ai l'impression qu'il me manque un petit détail dans la gestion du bougé de la souris. Voici le code complet de la page test (un copié collé dans une page locale permet de voir le probleme):
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
 
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<title>Multi Lien</title>
	<script type="text/javascript">
	/*<![CDATA[*/
		////////////////////////////////////////////////////////////
		// position of the tooltip relative to the mouse in pixel //
		var offsetx = 0;										  //
		var offsety =  0;										  //
		var in_mlink = false;
		function newelement(newid)
		{ 
			if(document.createElement)
			{ 
				var el = document.createElement('div'); 
				el.id = newid;     
				with(el.style)
				{ 
					display = 'none';
					position = 'absolute';
				} 
				el.innerHTML = '&nbsp;'; 
				document.body.appendChild(el); 
			} 
		} 
		var ie5 = (document.getElementById && document.all); 
		var ns6 = (document.getElementById && !document.all); 
		var ua = navigator.userAgent.toLowerCase();
		var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);
 
 
		function getmouseposition(e) // thanks to Grant O. Anderson from Arizona State University
		{
			if(document.getElementById  )
			{
				var iebody=(document.compatMode && 	document.compatMode != 'BackCompat') ? 	document.documentElement : document.body;
				pagex = (isapple == 1 ? 0 : (ie5)?iebody.scrollLeft:window.pageXOffset);
				pagey = (isapple == 1 ? 0 : (ie5)?iebody.scrollTop:window.pageYOffset);
				mousex = (ie5)?event.x:(ns6)?clientX = e.clientX:false;
				mousey = (ie5)?event.y:(ns6)?clientY = e.clientY:false;
 
				var lixlpixel_tooltip = document.getElementById('tooltip');
				if ( !in_mlink) {
					lixlpixel_tooltip.style.left = (mousex+pagex+offsetx) + 'px';
					lixlpixel_tooltip.style.top = (mousey+pagey+offsety) + 'px';
   					in_mlink = true;
				}
				else {
 
					if (( mousex+pagex+offsetx < lixlpixel_tooltip.style.left.replace(/px/,"")) || (mousey+pagey+offsety < lixlpixel_tooltip.style.top.replace(/px/,""))) {
							in_mlink = false;
					} 
				}
			}
		}
 
		function tooltip(tipdiv)
		{
			var tip = document.getElementById(tipdiv).innerHTML;
			if(!document.getElementById('tooltip')) newelement('tooltip');
			var lixlpixel_tooltip = document.getElementById('tooltip');
			lixlpixel_tooltip.innerHTML = tip;
			lixlpixel_tooltip.style.display = 'block';
			document.onmousemove = getmouseposition;
		}
 
		function exit()
		{
			if(document.getElementById )
			{
				var iebody=(document.compatMode && 	document.compatMode != 'BackCompat') ? 	document.documentElement : document.body;
				var lixlpixel_tooltip = document.getElementById('tooltip');
				if (in_mlink) {
					document.getElementById('tooltip').style.display = 'none';	
					in_mlink = false;
				}
			}
		}
		/*]]>*/
	</script>
 
	<style type="text/css">
	/*<![CDATA[*/
 
		/* style your tooltips here */
		#tooltip {
			padding: 3px;
			background: #f9f9f9;
			border: 1px solid #eee;
			text-align: center;
			font-size: smaller;
			opacity: .9;
		}
 
		/* style the spans with tooltips here */
		span.tip {
			border-bottom: 1px solid #eee;
		}
 
		span.tip span {
			display: none;
		}
 
		a.syst {
                color:#555555 ;
                margin-top:10px ; /* Crée un marge de 10pixels en haut du menu */
                display:block ;/* menu vertical*/
                }       
		a.syst:hover {
				 color:#000000 ;
                 background-color:#93CDD9;
               }                	
 
 
		/*]]>*/
	</style>
</head>
<body>
	<div id="main">
			<br/><br/><br/><br/><br/><br/><br/><br/><br/>
		    Ceci est une démonstation de multi-liens <span class="tip" onmouseover="tooltip('csstips');" onmouseout="exit();"><a href="http://www.developpez.com/">Lien 1 classique</a>, le menu tool tip doit apparaite au passage de la souris...
			<span id="csstips"><a class="syst" href="http://www.developpez.net/forums/">Mon lien 2 (forum)</a>
				<a class="syst" href="http://general.developpez.com/cours/">Mon Lien 3 (cours)</a>
				<a class="syst" href="http://xml.developpez.com/sources/">Mon lien 4 (source)</a></span></span>.
			<br/><br/><br/><br/><br/><br/><br/><br/><br/>
		    Ceci est une démonstation de multi-liens <span class="tip" onmouseover="tooltip('csstips2');" onmouseout="exit();"><a href="http://www.developpez.com/">Lien bis </a>, le menu tool tip doit apparaite au passage de la souris...
			<span id="csstips2"><a class="syst" href="http://www.developpez.net/forums/">Mon lien bis 2 (forum)</a>
				<a class="syst" href="http://general.developpez.com/cours/">Mon Lien bis 3 (cours)</a>
				<a class="syst" href="http://xml.developpez.com/sources/">Mon lien bis 4 (source)</a></span></span>.
 
		</div>
</body>
</html>
Merci d'avance, je pense que cette fonctionnalité interressera d'autres personnes. (le "tooltip-menu" est une façon d'implémenter Xlink voir ici sur le forum xml la discussion "pour en finir avec xlink").
Raphael