当前位置:首页 > JavaScript

js 实现 defer

2026-04-05 12:28:47JavaScript

在 JavaScript 中,defer 是一个用于 <script> 标签的属性,用于延迟脚本的执行,直到文档解析完成。以下是如何在 JavaScript 中模拟或实现类似 defer 功能的方法:

使用 DOMContentLoaded 事件

通过监听 DOMContentLoaded 事件,可以确保脚本在文档解析完成后执行。这种方法模拟了 defer 的行为。

js 实现 defer

document.addEventListener('DOMContentLoaded', function() {
    // 在这里编写需要延迟执行的代码
    console.log('文档解析完成,脚本执行');
});

动态创建 <script> 标签并设置 defer

可以通过 JavaScript 动态创建 <script> 标签,并设置其 defer 属性为 true

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

使用 asyncdefer 的组合

如果需要在脚本加载完成后立即执行,可以使用 asyncdefer 的组合。async 确保脚本异步加载,而 defer 确保脚本在文档解析完成后执行。

js 实现 defer

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

使用 setTimeout 模拟延迟

如果需要手动控制脚本的执行时间,可以使用 setTimeout 来模拟延迟执行。

setTimeout(function() {
    // 延迟执行的代码
    console.log('延迟执行的脚本');
}, 0);

使用 Promiseasync/await

通过 Promiseasync/await,可以更灵活地控制脚本的执行时机。

function deferScript() {
    return new Promise(resolve => {
        window.addEventListener('load', resolve);
    });
}

async function runScript() {
    await deferScript();
    console.log('文档和资源加载完成,脚本执行');
}

runScript();

注意事项

  • defer 属性仅适用于外部脚本(通过 src 引入的脚本)。
  • 动态创建的脚本默认是异步的,除非显式设置 asyncdefer
  • 使用 DOMContentLoadedload 事件时,确保脚本在文档头部或尽早加载,以避免事件已经触发。

以上方法可以根据具体需求选择,以实现类似 defer 的功能。

标签: jsdefer
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现验证码

js实现验证码

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

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现类

js实现类

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

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…