2012-11-24 9 views
5

Sto cercando di ottenere un suggerimento per un elemento SVG. (Test sotto Firefox 16.0.2) ho provato questo piccolo esempio, e funziona benissimo:Come ottenere il suggerimento del titolo generato da JavaScript per SVG da mostrare

<svg xmlns="http://www.w3.org/2000/svg"> 
    <rect id="test" x="20" y="30" width="200" height="150"> 
    <title>Test tooltip</title> 
    </rect> 
</svg> 

Ma, ho bisogno di generare il tooltip da javascript, come SVG viene anche generata da javascript. Quindi, solo come un primo test, ho provato generando solo il tooltip:

<script type="text/javascript"> 
function test(text) { 
    var title = document.createElement("title") 
    title.text = text 
    document.getElementById("test").appendChild(title) 
} 

</script> 
</head> 

<body onload="test('Test tooltip')"> 

<svg xmlns="http://www.w3.org/2000/svg"> 
    <rect id="test" x="20" y="30" width="200" height="150"> 
    </rect> 
</svg> 

Quando ho ispezionare i risultati di Firefox gli oggetti titolo compare identico al titolo generato dal codice HTML/SVG, salvo che quando mi mouse il rettangolo non c'è tooltip! Che cosa sto facendo di sbagliato?

risposta

14

L'elemento titolo deve trovarsi nello spazio nomi SVG, non nello spazio dei nomi predefinito. Pertanto, è necessario utilizzare createElementNS(). Inoltre, l'elemento del titolo SVG non ha la proprietà text. Utilizzare invece textContent. Quindi, dovrebbe funzionare:

<script type="text/javascript"> 
function test(text) { 
    var title = document.createElementNS("http://www.w3.org/2000/svg","title") 
    title.textContent = text 
    document.getElementById("test").appendChild(title) 
} 

</script> 
</head> 

<body onload="test('Test tooltip')"> 

<svg xmlns="http://www.w3.org/2000/svg"> 
    <rect id="test" x="20" y="30" width="200" height="150"> 
    </rect> 
</svg> 
+0

Funziona se inseriamo il 'titolo' all'interno di un 'uso'? – codenamezero

+0

@codenamezero Vuoi dire '', o intendi un titolo in un elemento a cui si fa riferimento? In entrambi i casi: provalo e sentiti libero di riferire sui risultati. –

+0

Sì, '' è il modo giusto per farlo perché non sto ottenendo il titolo di presentarsi? – codenamezero

Problemi correlati