当 `
HTML
✅ 正确做法是确保 在所有
方案一:为 添加 onerror 内联处理(轻量、即时)
@@##@@
⚠️ 注意:onerror 仅对 自身 src 失败触发(不监听 ),且需设 this.onerror=null 防止循环调用。此法简洁,适合静态页面。
方案二:JavaScript 全局监听(推荐用于复杂场景)
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('pict
ure').forEach(picture => {
const img = picture.querySelector('img');
if (!img) return;
// 监听 img 加载失败
img.addEventListener('error', () => {
// 可选:先尝试 fallback 图片
const fallbackSrc = '/uploads/20251227/1766824597694f9a9596b7a.jpg';
img.src = fallbackSrc;
// 进一步可记录错误或上报监控
console.warn(`[Picture Fallback] IMG load failed, using default: ${fallbackSrc}`);
});
// (进阶)也可监听 source 加载失败(需 polyfill 或现代 API)
// 注意:原生 `error` 事件不冒泡自 source,需通过 Promise.all + fetch 模拟检测
});
});✅ 最佳实践建议:
-
永远提供有效的 :即使
全部有效, 也是语义化必需项(无障碍、SEO、低带宽环境); - 避免 srcset 指向无效路径:开发阶段用真实 URL 或占位服务(如 https://via.placeholder.com/800x400?text=Loading...);
-
不要依赖
的 onerror :元素不支持 onerror 属性,也无法直接绑定事件; - 考虑渐进增强:若 JS 不可用,确保 的 src 是最终可靠地址,而非 invalid 或空值。
综上,

ure').forEach(picture => {
const img = picture.querySelector('img');
if (!img) return;
// 监听 img 加载失败
img.addEventListener('error', () => {
// 可选:先尝试 fallback 图片
const fallbackSrc = '/uploads/20251227/1766824597694f9a9596b7a.jpg';
img.src = fallbackSrc;
// 进一步可记录错误或上报监控
console.warn(`[Picture Fallback] IMG load failed, using default: ${fallbackSrc}`);
});
// (进阶)也可监听 source 加载失败(需 polyfill 或现代 API)
// 注意:原生 `error` 事件不冒泡自 source,需通过 Promise.all + fetch 模拟检测
});
});






