如何检测图像加载失败的原因?

How can I detect WHY an image failed to load?

我在页面上有一个 img 元素,其 src 在页面加载时动态设置(不同情况下使用不同的图像,图像由客户提供)。

我可以检测到图片何时加载失败,并通过报告来处理。当它加载失败时,我还设置了一个占位符图像。

<img alt="Image not found" onError="failedToLoadResource" id="something" class="class1 class2">

效果很好。然而,仅仅知道图像加载失败的时间是不够的。我需要能够确定它发生的原因。图片托管在我们的服务器上,因此 404 不太可能,但并非不可能。我无法访问客户的设备,也无法重现他们描述的问题。

我试过环顾四周,但找不到我要找的东西...

我猜可能是 404s、一些 CSP 配置问题、可能是一些互联网连接问题,等等。我只是想知道它是什么,以便更好地理解它。

编辑:忘了说代码在 Cordova 应用程序中,所以没有要检查的日志。

从客户端,您可以尝试通过调用 ajax 然后解析响应来访问图像。使用 jQuery.

轻松完成
var call = $.ajax( "image.img" )
  .fail(function( call, textStatus ) {
    alert( "Request failed: " + textStatus );
  });

从服务器端,您可以检查服务器日志,搜索正确的请求并查看发生了什么。如果请求从未到达服务器,则可能是 network/routing/firewall 问题。

但是,执行此操作的步骤在很大程度上取决于后端使用的内容。