如果图像工作正常,为什么 img onerror 处理程序会执行

Why would and img onerror handler execute if image works fine

本文关键字:处理 onerror 程序 执行 img 为什么 工作 图像 如果      更新时间:2023-09-26

我已经为某些图像实现了onerror属性,以检测我的站点中缺少的图像。

这是代码:

<script>
    function imageError(element) {
        var noPicUrl = "${noPicUrl}";
        var imageFailUrl = "/site/image/fail?mediaUrl=" + encodeURIComponent(element.src) + "&redirectUrl=" + encodeURIComponent(noPicUrl);
        element.onerror = "";
        element.src = imageFailUrl;
    }
</script>
<img src="${poiPic}" onerror="imageError(this);"/>

如您所见,当图像失败时,将调用以下 url:

/site/image/fail?mediaUrl=" + encodeURIComponent(element.src) + "&redirectUrl=" + encodeURIComponent(noPicUrl)

这是一项保存失败的mediaUrl的服务,以便我可以检查这些内容并返回重定向到重定向URL。这工作得很好。我刚刚测试了它,它记录得很好。

但问题是当我将其上传到生产环境并且日志启动时。日志中有 200 张图像。但是其中只有 4 个真正被删除,链接不起作用。其他的都完美地工作了。

可能是什么原因造成的?

图像加载错误很难管理,因为有时错误会导致 fr 缓存问题,有些连接,其他时间是由于 404 错误。不同的浏览器以多种方式管理这些错误

恕我直言,管理图像加载错误的最佳方法是使用 jquery 的 ImagesLoaded 插件

http://imagesloaded.desandro.com/