移动体验 / 方法解读

移动端图片懒加载在脚本禁用时为何不生效

移动端网页中图片的懒加载功能仅在启用 JavaScript 时才会生效,这是浏览器为了防止用户追踪而采取的反追踪措施。

白色背景上的孤立加载图标矢量标志和符号插画
主题资料配图,非新闻现场照片 · 配图:加载图标矢量标志和符号孤立在白色背景加载标志概念插画图片素材

检查图片是否设置了 loading 属性

在 HTML 代码中,确认目标图片是否添加了 loading 属性。如果未设置该属性,浏览器将默认使用 eager 模式,即立即加载图片,无论其位置如何。只有明确指定 loading='lazy',浏览器才会根据视口位置决定是否延迟加载。

使用浏览器开发者工具检查元素属性面板,查看 img 标签上是否存在 loading 属性。如果属性缺失,请添加该属性以启用懒加载功能。确保该属性值为 'lazy',而不是其他字符串或空值。这是启用懒加载机制的前提条件。

验证 JavaScript 是否被启用

懒加载功能的实现依赖于浏览器的 JavaScript 引擎。如果用户在浏览器设置中禁用了 JavaScript,或者使用了不支持 JavaScript 的设备,图片将无法触发懒加载逻辑。此时,即使图片位于视口之外,也会被立即加载。

在移动端测试时,可以通过关闭浏览器的 JavaScript 功能来模拟该场景。如果关闭后图片变为立即加载,则说明当前环境不支持懒加载。这是由于懒加载机制本身需要脚本执行才能工作。确保目标用户设备支持 JavaScript 是使用该功能的基础。

确认图片是否位于视口内

即使设置了 loading 属性且启用了 JavaScript,如果图片在页面加载时已经位于可视视口内,浏览器也不会延迟加载它。懒加载机制会计算图片与视口的距离,只有当图片进入视口下方一定距离时才会开始加载。

可以通过调整浏览器窗口大小或使用开发者工具的设备模拟器,将图片滚动到视口之外。然后观察网络面板,确认图片是否被延迟加载。如果图片始终在视口内,它将保持 eager 状态。这是懒加载机制的基本工作原理。

排查是否因反追踪机制导致

浏览器实施懒加载延迟加载机制的一个原因是反追踪。如果浏览器在禁用脚本的情况下也支持懒加载,网站可以通过在页面中放置图片来追踪用户的滚动位置。服务器可以记录请求图片的时间和数量,从而推断用户的浏览行为。

为了防止这种追踪行为,浏览器确保懒加载仅在启用 JavaScript 时生效。这意味着在脚本禁用的情况下,图片会立即加载,从而破坏了通过图片请求追踪用户行为的可能性。这是浏览器为了保护用户隐私而采取的设计策略。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. <img> HTML image embed element - HTML | MDN ↗
  2. 配图:加载图标矢量标志和符号孤立在白色背景加载标志概念插画图片素材 ↗
← 更多移动体验文章返回顶部 ↑