当前位置:首页 > JavaScript

js实现defer

2026-02-02 09:00:59JavaScript

js实现defer

在JavaScript中,defer属性用于延迟脚本的执行,直到HTML文档解析完成。以下是如何在原生JavaScript中实现类似defer功能的方法:

使用DOMContentLoaded事件

通过监听DOMContentLoaded事件,可以确保脚本在DOM完全加载后执行:

document.addEventListener('DOMContentLoaded', function() {
    // 在这里编写需要延迟执行的代码
    console.log('DOM fully loaded and parsed');
});

动态创建script标签并设置defer属性

可以动态创建<script>标签并设置defer属性:

var script = document.createElement('script');
script.src = 'your-script.js';
script.defer = true;
document.head.appendChild(script);

使用setTimeout延迟执行

虽然不推荐,但可以通过setTimeout实现类似延迟效果:

setTimeout(function() {
    // 延迟执行的代码
}, 0);

使用async/defer结合Promise

对于更复杂的场景,可以结合Promiseasync/await

function deferExecution() {
    return new Promise(resolve => {
        if (document.readyState === 'complete') {
            resolve();
        } else {
            window.addEventListener('load', resolve);
        }
    });
}

async function runDeferred() {
    await deferExecution();
    // 延迟执行的代码
}

runDeferred();

注意事项

  • 原生defer属性只对外部脚本有效,对内联脚本无效
  • 动态创建的脚本默认是异步加载的,设置defer可以改变其行为
  • 多个defer脚本会按它们在文档中出现的顺序执行

以上方法提供了在不同场景下实现延迟执行JavaScript代码的多种选择。

js实现defer

标签: jsdefer
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js 实现倒计时

js 实现倒计时

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

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…