由于 <set> 元素不适用于 Firefox 3,我认为您必须使用 ECMAScript。
如果您将以下脚本元素添加到 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>
您需要在 SVG 元素中添加 onload="init(evt)" 才能调用 init() 函数。
然后,在 SVG 的末尾添加工具提示文本:
<text id="tooltip" x="0" y="0" visibility="hidden">Tooltip</text>
最后,给每个你想要鼠标悬停功能的元素添加:
onmousemove="ShowTooltip(evt)"
onmouseout="HideTooltip(evt)"
mouseovertext="Whatever text you want to show"
我已经在http://www.petercollingridge.co.uk/interactive-svg-components/tooltip写了一个更详细的解释并改进了功能
我还没有包含多行工具提示,这需要多个 <tspan> 元素和手动换行。