Возможно ли прослушивать событие загрузки изображения в SVG?
Возможно ли прослушивание события загрузки <image>
в SVG? Если да, как это сделать?
Ответы
Ответ 1
Да, возможно.
В разметке:
<image xlink:href="example.png" width="10" height="10"
onload="alert('loaded')"/>
См. jsfiddle.
В 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>
См. jsfiddle.
Ответ 2
Я обнаружил, что это не сработает для SVG-объекта, созданного с помощью D3, но ответ здесь отлично справился:
Как я могу отображать изображение-заполнитель в SVG до загрузки реального изображения?
Например, это сработало:
var img = innerG.append("image")
.attr('onload', function() {
console.log('loaded');
})
.attr("xlink:href", src)
.attr("width", size)
.attr("height", size);
Но это не сработало:
var img = innerG.append("image")
.attr("xlink:href", src)
.attr("width", size)
.attr("height", size);
img.addEventListener('load', function() { console.log('loaded'); });