优雅的处理图片错误

188 阅读1分钟

图片显示错误处理

在我们的实际工作中,不可避免的会在页面中加载大量图片,但可能由于网络问题,或者图片文件缺失等问题,导致图片不能正常展示。我们希望有一种降级处理的方式,可以在图片加载失败后显示一张我们预先设定好的默认图片

一、监听图片的 error 事件

由于图片加载失败后,会抛出一个 error 事件,我们可以通过监听 error 事件的方式来对图片进行降级处理
<img id="img" src="//xxx.xxx.xxx/img.png">
const img = document.getElementById('img');
img.addEventListener('error',function(e){
    e.target.src = '//xxx.xxx.xxx/default.png'; // 为当前图片设定默认图
})

这种方式,确实实现了对异常图片的降级处理,但每张图片都需要通过 JS 进行获取,并且监听 error 事件,对于大量图片的情况并不适用

为此,我们可以使用内联事件来监听 error 事件

<img src="//xxx.xxx.xxx/img.png" onerror="this.src = '//xxx.xxx.xxx/default.png'">

我们可以看到,完全不需要单独去写 JS 的监听,我们就实现了异常图片的降级处理

二、通过css伪元素

使用css伪元素处理图片加载异常,当图片正常加载时,img的伪元素不会显示,加载异常时显示

img {
    position: relative;
    width: 40px;
    height: 40px;
    object-fit: cover;
    cursor: pointer;
}
img::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 40px;
    height: 40px;
    background-size: 100% 100%;
    background-image: url("~@/assets/image/noImage.webp");
    cursor: pointer;
}