È possibile ascoltare un evento di caricamento <image>
in SVG? Se sì, come si fa?È possibile ascoltare l'evento di caricamento delle immagini in SVG?
risposta
Sì, è possibile.
In marcatura:
<image xlink:href="example.png" width="10" height="10"
onload="alert('loaded')"/>
Vedi jsfiddle.
In script:
<script>
var img = document.createElementNS("http://www.w3.org/2000/svg", "image");
img.addEventListener('load', function() { alert('loaded'); });
// or alternatively:
// img.onload = function() { alert('loaded'); }
img.width.baseVal.value = 100;
img.height.baseVal.value = 100;
img.href.baseVal = "example.png";
</script>
Vedi jsfiddle.
Non riesco a farlo funzionare, né con markup né script; sei in grado di fornire un esempio? – Richard
http://www.w3.org/TR/SVG/interact.html#SVGEvents, hai provato l'attributo externalResourcesRequired di riferimento, come menzionato nel link? – neo
@neo: l'attributo externalResourcesRequired non è necessario qui. –
ho trovato che questo non avrebbe funzionato per oggetto SVG creati utilizzando D3, ma la risposta qui funzionava benissimo:
How can I display a placeholder image in my SVG until the real image is loaded?
Per esempio, questo ha funzionato:
var img = innerG.append("image")
.attr('onload', function() {
console.log('loaded');
})
.attr("xlink:href", src)
.attr("width", size)
.attr("height", size);
ma questo non ha lavoro:
var img = innerG.append("image")
.attr("xlink:href", src)
.attr("width", size)
.attr("height", size);
img.addEventListener('load', function() { console.log('loaded'); });
Ma il nome dell'attributo è come HTML: 'onload'. Ma il nome dell'evento è diverso: 'SVGLoad' not' load'. Vedi http://www.w3.org/TR/SVG/interact.html#LoadEvent – mems
Il termine "reale" equivale a "possibile"? – JJJ
Sì, reale == possibile – Rustam
E per intendi ? –
JJJ