当前位置:首页 > JavaScript

js 实现 defer

2026-03-13 18:10:12JavaScript

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

使用 defer 属性

在 HTML 中直接为 <script> 标签添加 defer 属性,这是最直接的方式:

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

defer 确保脚本在文档解析完成后按顺序执行,但不会阻塞 DOM 构建。

动态加载脚本

通过 JavaScript 动态创建 <script> 标签并设置 defer 属性:

js 实现 defer

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

这种方式适用于需要动态加载脚本的场景。

监听 DOMContentLoaded 事件

通过监听 DOMContentLoaded 事件延迟脚本执行,模拟 defer 行为:

document.addEventListener('DOMContentLoaded', () => {
  // 在这里执行需要延迟的代码
  console.log('DOM 解析完成,脚本现在执行');
});

这种方法适用于内联脚本或需要更灵活控制的场景。

js 实现 defer

使用 asyncPromise

结合 asyncPromise 实现类似 defer 的效果:

async function loadDeferredScript() {
  await new Promise(resolve => {
    window.addEventListener('load', resolve);
  });
  // 延迟执行的代码
  console.log('页面加载完成,脚本执行');
}
loadDeferredScript();

这种方法适用于需要等待所有资源(包括图片等)加载完成的场景。

模块化加载(ES Modules)

使用 ES Modules 的 type="module" 特性,默认具有 defer 行为:

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

模块脚本默认延迟执行,且支持更现代的模块化语法。

标签: jsdefer
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现类

js实现类

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js树实现

js树实现

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

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…