tl;dr: Use the onerror event to detect img, input (of type="image"), object, link, and script load failures.

document.body.addEventListener("error", (event) => {
  if (!event.target) return;

  if (event.target.tagName === "IMG") {
    console.error("IMG element failed to load", event.target.src);
  } else if (event.target.tagName === "LINK") {
    console.error("LINK element failed to load", event.target.href);
  }
}, /*useCapture=*/true);