当前位置:首页 > JavaScript

js实现defer

2026-02-02 09:00:59JavaScript

js实现defer

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

使用DOMContentLoaded事件

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

js实现defer

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

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

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

js实现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代码的多种选择。

标签: jsdefer
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

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

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…