Javascript 浏览器如何确定img的onerror事件

Javascript 浏览器如何确定img的onerror事件,javascript,html,spring-mvc,Javascript,Html,Spring Mvc,我正在开发一个应用程序,它将为客户端提供一些图像,有时图像可能是空白的,我们使用spring mvc作为控制器,这是核心代码: @RequestMapping public ResponseEntity<byte[]> getImg(String id) { byte[] res = imgService.find(id); // this res may be null headers.setDate("Expires", System.currentTimeMi

我正在开发一个应用程序,它将为客户端提供一些图像,有时图像可能是空白的,我们使用spring mvc作为控制器,这是核心代码:

@RequestMapping
public ResponseEntity<byte[]> getImg(String id) {
    byte[] res = imgService.find(id); // this res  may be null
    headers.setDate("Expires", System.currentTimeMillis() + 24 * 3600 * 1000 * 7);
    return ResponseEntity.ok().headers(headers).contentType(MediaType.IMAGE_PNG).body(res);
}
@RequestMapping
公共响应属性getImg(字符串id){
字节[]res=imgService.find(id);//此res可能为空
headers.setDate(“Expires”,System.currentTimeMillis()+24*3600*1000*7);
返回ResponseEntity.ok().headers(headers).contentType(MediaType.IMAGE_PNG).body(res);
}
如图所示,无论图像是否存在,响应代码始终为200

在客户端,我加载映像后,会为映像添加
onerror
事件,但是我发现,一旦服务器找不到映像(这意味着主体可能为空),即使状态代码为200,也会触发
onerror
事件

然后,我尝试在所需图像丢失后返回一个固定图像,并且不会触发
onerro
事件

所以我想知道浏览器是如何认为某个img加载错误的,它似乎不是基于状态码的


有关于此的文档吗?

在Img标记上添加事件列表器,并调用自定义逻辑

示例代码:

<img id="photo"
     onload='loaded(this.id)'
     src=""
     alt="alt text"
     />

有关于如何检测图像加载错误的帖子。
,使用普通Javascript进行检测,并且。

您确定字节[]res=imgService.find(id);res返回您的图像,或者仅在您的注释中它将为空。因此,在您的问题“image(这意味着主体可能为null)中,即使状态代码为200。”这意味着您应该检查如果数据为null,您应该添加onerror,200 status意味着http协议没有发生错误。