HTMLIFrameElement: loading 属性

Baseline 2023
新推出

自 ⁨2023 年 12 月⁩起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

HTMLIFrameElement 接口的 loading 属性是一个字符串,它向 用户代理 提供一个提示,指示 iframe 是应该在页面加载时立即加载,还是只在需要时加载。

这可以用来优化文档内容的加载。页面加载时可见的 iframe 可以立即(预加载)下载,而页面初始加载时很可能不在视口中的 iframe 可以延迟加载——在它们出现在窗口的 视觉视口 前夕。

一个字符串,向用户代理提供一个提示,说明如何最好地调度 iframe 的加载。可能的值为:

eager

在元素被处理后立即加载 iframe。这是默认值。

lazy

当浏览器认为近期可能需要时加载 iframe。

用法说明

必须启用 JavaScript

加载仅在启用 JavaScript 时才会被延迟,而不管此属性的值如何。

这是一种反跟踪措施,因为如果用户代理在禁用脚本的情况下支持延迟加载,用户仍然可以通过在页面标记中策略性地放置 iframe 来跟踪用户的近似滚动位置,从而使用户能够通过服务器跟踪请求的数量和时间。

load 事件的时序

当文档已完全处理时,会触发 load 事件。

即使 iframe 在视觉视口中并且因此在页面加载时被获取,延迟加载的 iframe 也不会影响 load 事件的时序。文档中所有预加载的 iframe 都必须在 load 事件触发之前被获取。

示例

下面的示例展示了如何定义一个延迟加载的 iframe,然后将其附加到文档的 <div> 中。然后,只有当 iframe 即将可见时,才会加载该框架。

js
// Define iframe with lazy loading
const iframe = document.createElement("iframe");
iframe.src = "https://example.com";
iframe.width = 320;
iframe.height = 240;
iframe.loading = "lazy";

// Add to div element with class named frameDiv
const frameDiv = document.querySelector("div.frameDiv");
frameDiv.appendChild(iframe);

规范

规范
HTML
# dom-iframe-loading

浏览器兼容性

另见