当前位置:首页 > JavaScript

defer js 实现

2026-04-05 15:52:07JavaScript

defer 属性简介

defer<script> 标签的一个布尔属性,用于告知浏览器该脚本可以延迟执行,直到文档解析完成后再运行。这种方式不会阻塞 HTML 解析,适合用于不依赖 DOM 操作的脚本。

基本用法

在 HTML 文件中,直接在 <script> 标签中添加 defer 属性即可:

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

浏览器会异步下载脚本文件,但延迟到文档解析完成后才执行。

执行顺序保证

多个带有 defer 属性的脚本会按照它们在文档中出现的顺序依次执行。例如:

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

即使 b.js 先下载完成,也会等待 a.js 执行完毕后再执行。

与 async 的区别

deferasync 都用于异步加载脚本,但行为不同:

  • defer:脚本按顺序执行,在 DOMContentLoaded 事件前触发。
  • async:脚本下载完成后立即执行,顺序无法保证。

适用场景

defer 适用于以下情况:

  • 脚本依赖完整的 DOM 结构
  • 多个脚本之间有执行顺序依赖
  • 不需要在加载阶段立即执行的逻辑

注意事项

  • 内联脚本(无 src 属性)的 defer 属性无效
  • document.write 在延迟脚本中不可用
  • 动态插入的 <script> 标签的 defer 属性可能被忽略

兼容性处理

现代浏览器均支持 defer 属性。对于老旧浏览器,可以手动实现类似功能:

defer js 实现

document.addEventListener('DOMContentLoaded', function() {
  // 在此处加载或执行脚本
});

性能优化建议

将不影响首屏渲染的脚本标记为 defer,特别是第三方分析脚本、非关键功能脚本等。关键路径脚本应避免使用 defer,以确保及时执行。

标签: deferjs
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现类

js实现类

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

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…