SVG - Interattività
Le immagini SVG possono essere rese reattive alle azioni dell'utente. SVG supporta eventi del puntatore, eventi della tastiera e eventi del documento. Considera il seguente esempio.
Esempio
testSVG.htm<html>
<title>SVG Interactivity</title>
<body>
<h1>Sample Interactivity</h1>
<svg width="600" height="600">
<script type="text/JavaScript">
<![CDATA[
function showColor() {
alert("Color of the Rectangle is: "+
document.getElementById("rect1").getAttributeNS(null,"fill"));
}
function showArea(event){
var width = parseFloat(event.target.getAttributeNS(null,"width"));
var height = parseFloat(event.target.getAttributeNS(null,"height"));
alert("Area of the rectangle is: " +width +"x"+ height);
}
function showRootChildrenCount() {
alert("Total Children: "+document.documentElement.childNodes.length);
}
]]>
</script>
<g>
<text x="30" y="50" onClick="showColor()">Click me to show rectangle color.</text>
<rect id="rect1" x="100" y="100" width="200" height="200"
stroke="green" stroke-width="3" fill="red"
onClick="showArea(event)"/>
<text x="30" y="400" onClick="showRootChildrenCount()">
Click me to print child node count.</text>
</g>
</svg>
</body>
</html>
Spiegazione
SVG supporta le funzioni JavaScript / ECMAScript. Il blocco di script deve essere nel blocco CDATA, considerare il supporto dei dati dei caratteri in XML.
Gli elementi SVG supportano eventi del mouse, eventi della tastiera. Abbiamo utilizzato l'evento onClick per chiamare una funzione javascript.
Nelle funzioni javascript, document rappresenta il documento SVG e può essere utilizzato per ottenere gli elementi SVG.
Nelle funzioni javascript, l'evento rappresenta l'evento corrente e può essere utilizzato per ottenere l'elemento di destinazione su cui è stato generato l'evento.
Produzione
Apri textSVG.htm nel browser web Chrome. Puoi utilizzare Chrome / Firefox / Opera per visualizzare l'immagine SVG direttamente senza alcun plug-in. Internet Explorer 9 e versioni successive supportano anche il rendering di immagini SVG. Fare clic su ogni testo e rettangolo per vedere il risultato.