You need to enable JavaScript to run this app. YouTube iframe懒加载在Chrome初始加载时仍触发相关脚本加载问题
优惠活动
大模型
产品
解决方案
定价
更多

YouTube iframe懒加载在Chrome初始加载时仍触发相关脚本加载问题

问题根因

你当前的逻辑存在时序错误:只要检测到浏览器支持原生iframe懒加载,就会在脚本执行时立刻将所有对应iframe的data-src赋值给src属性。Chrome在DOM尚未完成渲染、还未计算元素位置的阶段拿到iframe的src,就会直接触发资源加载,无视loading="lazy"属性;而Safari的原生懒加载实现会在src赋值后额外做一次可见性判断,所以表现符合预期。

修复方案

方案1:纯原生实现(无第三方依赖,兼容Chrome 77+、Firefox 79+、Safari 15.4+)

无需额外JS逻辑,直接把iframe的data-src改为普通src属性,保留loading="lazy"即可,浏览器会自动根据元素可见性控制加载时机:

<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/xxxxxxx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

注意必须给iframe设置明确的宽高属性,否则浏览器无法提前计算元素位置,会默认直接触发加载。

方案2:全浏览器兼容方案

如果需要兼容低版本浏览器,直接统一用LazySizes处理所有懒加载逻辑,不需要判断原生支持,所有浏览器表现一致:

<iframe width="560" height="315" data-src="https://www.youtube.com/embed/xxxxxxx" class="lazyload" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<script>
const script = document.createElement('script');
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.2.2/lazysizes.min.js';
document.body.appendChild(script);
</script>

方案3:保留原有兼容逻辑的修正版

如果要兼顾原生懒加载减少第三方依赖,只需把赋值src的逻辑延后到DOM完全渲染完成后执行即可:

<iframe loading="lazy" width="560" height="315" data-src="https://www.youtube.com/embed/xxxxxxx" class="lazyload" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<script>
if ('loading' in HTMLIFrameElement.prototype) {
  document.addEventListener('DOMContentLoaded', () => {
    const iframes = document.querySelectorAll('iframe[loading="lazy"]');
    iframes.forEach(iframe => {
      iframe.src = iframe.dataset.src;
    });
  });
} else {
  const script = document.createElement('script');
  script.src = 'https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.2.2/lazysizes.min.js';
  document.body.appendChild(script);
}
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:00:00