• 请不要在回答技术问题时复制粘贴 AI 生成的内容
quanmengli
V2EX  ›  程序员

踩坑:只看 img.complete 会把懒加载图片误判成发布失败

  •  
  •   quanmengli · 3h 53m ago · 314 views

    最近在给自己的小站 https://nanobanana21.net/ 做内容发布后的自动巡检,需要确认文章里的外链图片是否真的加载成功。

    一开始的判断很简单:

    img.complete && img.naturalWidth > 0
    

    结果页面首屏图片正常,第二张图经常是 complete=false, naturalWidth=0,但手动往下滚后又能正常显示。后来发现不是图片挂了,而是目标平台用了 lazy loading ,图片还没进入视口。

    现在改成三步:

    1. 找到目标图片后先 scrollIntoView({ block: 'center' });
    2. 等待 complete && naturalWidth > 0;
    3. 最后检查 currentSrc,不再只看原始 src。

    第三步也挺重要。有的平台会把外链图转成自己的代理地址,例如 Cloudinary / imgix 。此时 DOM 里的 src 可能已经不是提交时的 URL ,但图本身是正常的。我的验收逻辑现在会同时记录原始地址、currentSrc、尺寸和加载状态,避免把代理图当成丢图。

    还有一个边界:HTTP HEAD 返回 200 只能说明资源可访问,不能说明页面渲染时没被 CSP 、代理参数或懒加载卡住。所以最终还是以浏览器渲染态为准。

    大家做发布后验收时,是直接检查 DOM ,还是会再加网络请求/截图层面的校验?

    2 replies  •  2026-10-06 15:58:31 +08:00
    june4
        1
    june4  
       3h 28m ago
    用 load 事件不行吗
    AkaGhost
        2
    AkaGhost  
       29 mins ago
    越读越奇怪,点击 OP 的个人资料发现发的一共 6 个帖子全是 AIGC 的味道。反而是读起来还像人类的回复都还在去年( 2025 )还没什么实质性内容。再一看注册日期 2010 年,profile 里全是挂的链接。

    以及,每个帖子开头必定是 OP 自己的站点,而且域名全都不同,是不是来 V2 搞 SEO 的?

    @Livid 看看呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2532 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:27 · PVG 16:27 · LAX 01:27 · JFK 04:27
    ♥ Do have faith in what you're doing.