方法一:
//判断图片是否存在 function CheckImgExists(imgurl) { var ImgObj = new Image(); //判断图片是否存在 ImgObj.src = imgurl; //存在图片 if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) { console.log('图片地址有效') return true; } else { console.log('图片地址无效') return false; } } 直接调用函数 CheckImgExists(图片地址) 即可
方法二:
//判断图片是否存在 function is_img_url(imgurl) { return new Promise(function(resolve, reject) { var ImgObj = new Image(); //判断图片是否存在 ImgObj.src = imgurl; ImgObj.onload = function(res) { resolve(res); } ImgObj.onerror = function(err) { reject(err) } }).catch((e) => {}); // 加上这句不会报错(Uncaught (in promise)) }
有效返回 true,无效返回 false
两种判断方式
var cover_img,img = '/static/artice/images/icon24.png'; //默认图片(失败显示图) // 判断图片是否存在 if(is_img_url(data.cover_map)){ img = data.cover_map } cover_img = `<img src="${img}" οnerrοr="javascript:this.src='/static/artice/images/icon24.png';" alt="">`
方法三:
要判断图片链接是否有效,我们首先创建一个Image对象,然后把链接设置在Image对象上,如果能正常加载,则代表链接有效。因为图片是异步加载的,所以我们需要Promise来处理。创建一个处理函数,如下代码:
function checkImgExists(imgurl) {
return new Promise(function(resolve, reject) {
var ImgObj = new Image()
ImgObj.src = imgurl
ImgObj.onload = function(res) {
resolve(res)
}
ImgObj.onerror = function(err) {
reject(err)
}
})
}
- 根据以上代码,当图片加载成功时,resolve(完成)被触发,当图片加载失败时,reject(失败)被触发。于是可以使用一下代码进行调用测试:
checkImgExists('https://test.com/dssd=0.jpg').then(()=>{
//success callback
console.log('有效链接')
}).catch(()=>{
//fail callback
console.log('无效链接')
})
全部代码如下:
function checkImgExists(imgurl) {
return new Promise(function(resolve, reject) {
var ImgObj = new Image();
ImgObj.src = imgurl;
ImgObj.onload = function(res) {
resolve(res);
}
ImgObj.onerror = function(err) {
reject(err)
}
})
}
checkImgExists('https://test.com/20200803115749u=2876792700,1627849181&fm=26&gp=0.jpg').then(()=>{
//success callback
console.log('有效链接')
}).catch(()=>{
//fail callback
console.log('无效链接')
})