当前位置:首页 > JavaScript

懒加载js实现

2026-03-16 06:36:07JavaScript

懒加载 JavaScript 的实现方法

懒加载(Lazy Loading)是一种优化技术,用于延迟加载非关键资源(如图片、脚本等),直到它们即将进入视口(viewport)时才加载。以下是几种实现 JavaScript 懒加载的方法:

使用 IntersectionObserver API

IntersectionObserver 是现代浏览器提供的 API,可以高效地监听元素是否进入视口。

懒加载js实现

document.addEventListener('DOMContentLoaded', function() {
  const lazyScripts = document.querySelectorAll('script[data-src]');

  const observer = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const script = entry.target;
        script.src = script.getAttribute('data-src');
        observer.unobserve(script);
      }
    });
  });

  lazyScripts.forEach(script => {
    observer.observe(script);
  });
});

使用 data-src 属性

通过将脚本的 src 替换为 data-src 属性,并在需要时动态加载。

<script data-src="path/to/your/script.js"></script>
function lazyLoadScripts() {
  const scripts = document.querySelectorAll('script[data-src]');
  scripts.forEach(script => {
    script.src = script.getAttribute('data-src');
  });
}

// 触发条件:滚动事件或视口检查
window.addEventListener('scroll', lazyLoadScripts);

动态创建 script 标签

通过动态创建 script 标签并插入到 DOM 中,实现按需加载。

懒加载js实现

function loadScript(url) {
  const script = document.createElement('script');
  script.src = url;
  document.body.appendChild(script);
}

// 触发条件:用户操作或视口检查
loadScript('path/to/your/script.js');

使用 asyncdefer 属性

虽然这不是严格的懒加载,但可以通过 asyncdefer 属性优化脚本加载行为。

<script async src="path/to/your/script.js"></script>
<script defer src="path/to/your/script.js"></script>

使用第三方库

一些库(如 Lozad.jslazysizes)可以简化懒加载的实现。

<script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
<script>
  const observer = lozad();
  observer.observe();
</script>

注意事项

  • 性能优化:懒加载脚本可以减少初始页面加载时间,但需确保关键功能不受影响。
  • 兼容性IntersectionObserver 在旧浏览器中可能需要 polyfill。
  • 触发条件:根据实际需求选择合适的触发条件(如滚动、视口检查或用户交互)。

标签: 加载js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…