目前,在每个图像上我都有这样的东西:
<img src="img/hello.svg" onerror="this.src='img/hello.png';this.onerror=null;">
是否可以制作页面宽的代码,在发生错误时自动从.svg切换到不同的格式?
我认为。。。我看到了一个解决方案,就像我一年前描述的那样......但是我找了很远很远,没有运气。
您可以使用querySelectorAll
选择src
属性以 .svg
结尾的所有图像,并在每个图像上添加一个事件侦听器:
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('img[src$=".svg"]').forEach(function(el) {
console.log('el');
el.addEventListener('error', changeImage);
});
});
function changeImage(e) {
e.target.src = e.target.src.slice(0, -4) + '.png';
e.target.removeEventListener('error', changeImage);
}
<img src="img/hello.svg">
当然,只需遍历所有以 .svg
结尾的img
并将error
处理程序附加到它们:
document.querySelectorAll('img[src$=".svg"]')
.forEach((img) => {
function errorListener () {
img.removeEventListener('error', errorListener);
img.src = img.src.replace(/src$/, 'png');
}
img.addEventListener('error', errorListener);
});