当前位置:首页 > JavaScript

js 实现 defer

2026-01-31 20:11:53JavaScript

在 JavaScript 中,defer 是一种脚本加载属性,用于延迟脚本的执行,直到 HTML 文档解析完成。以下是几种实现 defer 效果的方法:

使用 defer 属性

在 HTML 中直接为 <script> 标签添加 defer 属性,浏览器会异步加载脚本但延迟执行,直到 DOM 解析完成。

js 实现 defer

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

动态加载脚本

通过 JavaScript 动态创建 <script> 标签并设置 defer 属性,实现延迟加载。

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

监听 DOMContentLoaded 事件

将脚本逻辑包装在 DOMContentLoaded 事件监听器中,确保脚本在 DOM 解析完成后执行。

js 实现 defer

document.addEventListener('DOMContentLoaded', function() {
    // 脚本逻辑
});

使用 asyncPromise

结合 asyncPromise 实现类似 defer 的效果,确保脚本在 DOM 准备好后执行。

async function loadDeferredScript() {
    await new Promise(resolve => {
        if (document.readyState === 'complete') {
            resolve();
        } else {
            document.addEventListener('DOMContentLoaded', resolve);
        }
    });
    // 脚本逻辑
}
loadDeferredScript();

模块化加载

使用 ES6 模块的 import 语法,模块默认具有 defer 行为。

<script type="module" src="module.js"></script>

注意事项

  • defer 仅适用于外部脚本(带有 src 属性的 <script> 标签)。
  • 多个 defer 脚本会按顺序执行,而 async 脚本执行顺序不确定。
  • 动态创建的脚本默认是异步的,需显式设置 defer 或通过事件控制执行时机。

标签: jsdefer
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现计算器

js实现计算器

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

js实现打印

js实现打印

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

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-contain…

js如何实现继承

js如何实现继承

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

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…