Puisque l'élément <set>
ne fonctionne pas avec Firefox 3, je pense que vous devez utiliser ECMAScript.
Si vous ajoutez l'élément de script suivant dans votre SVG:
<script type="text/ecmascript"> <![CDATA[
function init(evt) {
if (window.svgDocument == null) {
// Define SGV
svgDocument = evt.target.ownerDocument;
}
tooltip = svgDocument.getElementById('tooltip');
}
function ShowTooltip(evt) {
// Put tooltip in the right position, change the text and make it visible
tooltip.setAttributeNS(null,"x",evt.clientX+10);
tooltip.setAttributeNS(null,"y",evt.clientY+30);
tooltip.firstChild.data = evt.target.getAttributeNS(null,"mouseovertext");
tooltip.setAttributeNS(null,"visibility","visible");
}
function HideTooltip(evt) {
tooltip.setAttributeNS(null,"visibility","hidden");
}
]]></script>
Vous devez ajouter onload="init(evt)"
dans l'élément SVG pour appeler la fonction init().
Puis, à la fin du SVG, ajouter le texte info-bulle:
<text id="tooltip" x="0" y="0" visibility="hidden">Tooltip</text>
Enfin, pour chacun des éléments que vous voulez avoir la fonction mouseover ajouter:
onmousemove="ShowTooltip(evt)"
onmouseout="HideTooltip(evt)"
mouseovertext="Whatever text you want to show"
I 'ai écrit une explication plus détaillée avec une fonctionnalité améliorée à http://www.petercollingridge.co.uk/interactive-svg-components/tooltip
Je n'ai pas encore inclus les info-bulles multilignes, ce qui nécessiterait plusieurs <tspan>
éléments et emballage manuel des mots.
Morais, il pourrait être utile si la question vous rétréci un peu. Peut-être un peu plus précis sur les technologies qui sont à votre disposition et sur les navigateurs que vous devez prendre en charge (Firefox et quoi d'autre?) Juste une suggestion. –
La réponse acceptée est maintenant périmée et celle de Neil Fraser est toujours correcte. – Craig