David Bushell e Chris Coyier escreveram em um blog sobre este pequeno truque para carregar um substituto de bitmap para um SVG carregado por meio de uma <img>
tag:
<img src="image.svg" onerror="this.onerror=null; this.src='image.png'">
Indo um pouco mais além, podemos detectar * se o SVG é compatível e ter uma classe CSS pronta para SVGs degradantes usados como imagens de fundo:
<img src="image.svg" onerror="this.onerror=null; this.src='image.png; document.documentElement.className+=' no-svg'">
Isso adicionará uma classe de no-svg
à <html>
tag se houver erros na imagem SVG. Quaisquer SVGs de plano de fundo definidos em seu CSS podem ser escritos assim:
.sprite {
background-image: url(image.svg);
}
.no-svg .sprite {
background-image: url(image.png);
}
Observação: isso só detectará se o SVG falha ao carregar, o que em 99,99% das vezes também deve estar relacionado ao suporte a SVG, e não a um problema de rede.
Use esta técnica apenas em um <img>
(como o logotipo) para não modificar o DOM em cada imagem com falha ‘