当前位置:首页 > JavaScript

js 实现 defer

2026-04-05 12:28:47JavaScript

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

使用 DOMContentLoaded 事件

通过监听 DOMContentLoaded 事件,可以确保脚本在文档解析完成后执行。这种方法模拟了 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 确保脚本在文档解析完成后执行。

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,可以更灵活地控制脚本的执行时机。

js 实现 defer

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实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现倒计时

js实现倒计时

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

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图

js实现图

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

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…