利用image对象的onerror事件来判断,出错则更换image对象的src为默认图片的URL。
<img src="图片的url地址" alt="图片XX" onerror="this.src='默认图片的url地址'">
注意:如果使用不当,会造成死循环。比如:当【默认图片的url地址】也加载不成功(比如网速比较慢的时候)或不存在的话,
就会反复的加载(触发onerror),最后造成堆栈溢出错误。
解决办法如下
a、更改 onerror 代码为其它处理方式或者确保 onerror 中的默认图片足够小,并且存在。
b、控制onerror事件只触发一次,需要增加这句话:this.onerror=null; 增加后如下:
<img src="图片的url地址" alt="图片XX" onerror="this.src='默认图片的url地址;this.onerror=null'"/>
具体代码
<img
className={styles.urlImg}
src={"" + item.url + "/favicon.ico"} onError={() => {
const img = window.event.srcElement;
img.src = "存在的.png";
img.οnerrοr = null;
}}
/>
因为 event已经被弃用了
优化
<img
className={styles.urlImg}
src={"" + item.url + "/favicon.ico"} onError={(e) => {
const img = e.currentTarget;
img.src = "https://api.iowen.cn/favicon/www.aliued.cn.png";
img.οnerrοr = null;
}}
/>