我有一个网站,您可以在其中搜索产品。
所有产品图片的名称都类似于{{1}
某些产品图片丢失,如果显示img/product/{id}.jpg.
,则应改为显示。
我找到了以下代码来实现此目的:
image_missing.jpg
这很好。如果图像不存在,则将其替换为function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
/* check if image exists */
if(UrlExists(imageURL) == true){
/* image exists, do nothing */
}
else{
imageURL = 'img/product/image_missing.jpg';
}
。
问题是我仍然可以
加载页面时,在控制台中输入(!)无法加载资源:服务器以状态404响应 (未找到)
。
即使网站上没有损坏的图像,Google AdWords也会看到所有这404个图标(目前为7个),并且不允许我将该页面作为广告系列的目标网页。
是否可以在不获取404的情况下检查图像是否存在?我非常感谢能在这里得到的任何帮助。
答案 0 :(得分:0)
您可以在不发出HTTP请求的情况下尝试以下操作,仅检查图像是否存在:
function UrlExists(imageUrl) {
return new Promise((resolve, reject) => {
let imageData = new Image();
imageData.onload = () => {
resolve();
}
imageData.onerror = () => {
reject()
}
imageData.src = imageUrl;
})
}
使用上述功能如下:
UrlExists(imageURL)
.then(function(result){
// resolve here
// image exists, do nothing
}, function(error) {
// reject here
imageURL = 'img/product/image_missing.jpg';
});