当前位置:首页 > JavaScript

defer js 实现

2026-01-31 23:33:34JavaScript

defer 属性实现 JavaScript 延迟加载

在 HTML 中,defer 属性用于告知浏览器该脚本应在文档解析完成后、DOMContentLoaded 事件触发前执行。带有 defer 的脚本会按它们在文档中出现的顺序执行。

<script src="script.js" defer></script>

async 属性实现异步加载

async 属性与 defer 类似,但脚本会在下载完成后立即执行,不保证执行顺序。适用于不依赖其他脚本的独立代码。

defer js 实现

<script src="script.js" async></script>

动态创建 script 标签

通过 JavaScript 动态创建 script 元素并添加到 DOM 中,可以更灵活地控制脚本加载时机。

const script = document.createElement('script');
script.src = 'script.js';
document.body.appendChild(script);

使用事件监听确保执行顺序

当需要确保多个动态加载的脚本按顺序执行时,可以使用 onload 事件来链式加载。

defer js 实现

function loadScript(src, callback) {
    const script = document.createElement('script');
    script.src = src;
    script.onload = callback;
    document.head.appendChild(script);
}

loadScript('first.js', function() {
    loadScript('second.js');
});

Intersection Observer API 实现懒加载

对于需要延迟加载的非关键脚本,可以使用 Intersection Observer API 在元素进入视口时再加载。

const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if (entry.isIntersecting) {
            const script = document.createElement('script');
            script.src = 'lazy-script.js';
            document.body.appendChild(script);
            observer.unobserve(entry.target);
        }
    });
});

observer.observe(document.querySelector('#lazy-load-trigger'));

模块化动态导入

在支持 ES 模块的环境中,可以使用动态 import() 语法按需加载模块。

button.addEventListener('click', async () => {
    const module = await import('./module.js');
    module.doSomething();
});

每种方法适用于不同场景,defer 适合维护执行顺序的文档级脚本,async 适合独立第三方脚本,动态加载适合按需功能,而模块化导入适合现代模块化应用。

标签: deferjs
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…