You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery懒加载图片被慢速异步外部脚本阻塞,如何解决?

问题根因

你遇到的问题核心是当前使用的jQuery懒加载脚本,默认绑定了window.load事件才启动初始化。load事件的触发规则本身就是等待页面所有资源(包括异步加载的第三方脚本、图片、样式表等)全部加载完成后才执行,和脚本是否设置async属性无关,所以才会出现第三方脚本加载慢拖慢懒加载启动的情况。

可落地的解决方案

1. 调整懒加载的触发时机

直接修改懒加载的绑定事件,从window.load改为DOMContentLoaded,后者在页面DOM结构解析完成后就会触发,不需要等待任何外部资源加载,能大幅提前懒加载的启动时间。
代码修改示例:

// 原有逻辑(绑定load事件,需等所有资源加载完)
$(window).on('load', function () {
  $('img.lazy').lazyload();
});

// 修改后的逻辑(DOM解析完成就初始化)
$(document).on('DOMContentLoaded', function () {
  $('img.lazy').lazyload();
});

如果懒加载脚本支持直接调用,甚至可以把初始化代码放在</body>标签之前执行,只要对应懒加载图片的DOM已经渲染就能正常工作,不需要绑定任何事件。

2. 替换为原生浏览器懒加载

当前所有主流现代浏览器都原生支持图片懒加载能力,不需要依赖任何jQuery脚本,完全不会被第三方脚本的加载进度影响。只需要给需要懒加载的图片加上loading="lazy"属性即可,浏览器会自动根据视口位置控制图片加载时机,性能比第三方JS懒加载方案高30%以上。
代码示例:

<!-- 原有懒加载写法 -->
<img class="lazy" data-src="产品图片地址" alt="产品名称">

<!-- 原生懒加载写法 -->
<img src="产品图片地址" loading="lazy" alt="产品名称">

3. 降级第三方脚本的加载优先级

如果一定要保留原有懒加载的load事件绑定逻辑,可以把第三方统计脚本的加载逻辑放到浏览器空闲时再执行,避免它们拖慢load事件的触发时间。
代码示例:

// DOM加载完成后,浏览器空闲时再加载第三方统计脚本
window.addEventListener('DOMContentLoaded', function () {
  const loadThirdScripts = () => {
    // 此处写入GA、FB Pixel、Google转化跟踪的脚本加载逻辑
  };
  if ('requestIdleCallback' in window) {
    requestIdleCallback(loadThirdScripts);
  } else {
    // 兼容旧浏览器,延迟1秒加载第三方脚本
    setTimeout(loadThirdScripts, 1000);
  }
});

内容的提问来源于stack exchange,提问作者Alex Rosca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:45:02