使用Javascript检查图像URL是否有效

使用Javascript检查图像URL是否有效,javascript,Javascript,基本上,我需要检查图像的URL是否正常工作,以便我可以显示它或显示一些占位符图像 最好的解决方案似乎是发出Ajax请求或类似的请求,然后根据响应进行处理。问题是请求说它“已被CORS阻止”,所以它总是返回false,所以函数总是显示占位符图像 函数checkImg(url){ $.ajax({ url:url, 方法:“GET”, 数据类型:“json” }).完成(功能(响应){ 返回真值 }).fail(函数(jqXHR、textStatus、errorshown){ 返回错误 }) } i

基本上,我需要检查图像的URL是否正常工作,以便我可以显示它或显示一些占位符图像

最好的解决方案似乎是发出Ajax请求或类似的请求,然后根据响应进行处理。问题是请求说它“已被CORS阻止”,所以它总是返回false,所以函数总是显示占位符图像

函数checkImg(url){
$.ajax({
url:url,
方法:“GET”,
数据类型:“json”
}).完成(功能(响应){
返回真值
}).fail(函数(jqXHR、textStatus、errorshown){
返回错误
})
}
if checkImg(url){
#做点什么
}否则{
#做点别的
}
最让我恼火和困惑的是,我可以直接访问图像(例如,从这个URL:单击时工作),但控制台在执行请求时返回“被CORS阻止”错误

另外,如果我将链接直接放在HTML标记中,图像也可以工作,但是我不能从那里进行错误处理,对吗

我很感激你的回答


编辑:事实证明,我可以用一点HTML来处理这种错误。使用“onerror”成功了!非常感谢jonatjano提供的解决方案

实际上有一种方法可以直接在html标记上检测错误

let works=document.getElementById(“works”)
let breaks=document.getElementById(“breaks”)
让占位符src=”https://www.morawealth.com/wp-content/uploads/2015/06/placeholderimg.png"
让errorHandler=e=>{
log(e.target.id,“无法加载图像替换为占位符”)
e、 target.src=占位符src
}
works.onerror=errorHandler
breaks.onerror=errorHandler
img{
宽度:25%;
身高:25%;
}


Cors会阻止检索图像,除非服务器设置了适当的Cors规则,请参见,而不是使用图像延迟加载。当你寻找它时,有100个插件可供使用。你的JavaScript知道你的访问者是否能够从其他来源加载图像是一个隐私问题(简单的例子:图像可能受密码保护,因此如果用户登录到其他站点或不登录,它将泄漏)。所以你不能这么做(除非获得CORS的许可)。