当前位置:首页 > JavaScript

defer js 实现

2026-04-05 15:52:07JavaScript

defer 属性简介

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

基本用法

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

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

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

defer js 实现

执行顺序保证

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

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

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

defer js 实现

与 async 的区别

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

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

适用场景

defer 适用于以下情况:

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

注意事项

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

兼容性处理

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

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

性能优化建议

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

标签: deferjs
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…

js实现点击效果

js实现点击效果

实现点击效果的JavaScript方法 使用addEventListener绑定点击事件 通过document.getElementById或document.querySelector获取DOM元素…

js实现vue弹窗

js实现vue弹窗

实现 Vue 弹窗的基本方法 使用 Vue.js 实现弹窗功能可以通过组件化方式完成。以下是一个简单的弹窗实现示例,包含显示/隐藏控制、内容插槽和基础样式。 弹窗组件代码 创建 Modal.vue…

js实现vue模板

js实现vue模板

使用纯 JavaScript 实现 Vue 模板功能 要实现类似 Vue 的模板功能,可以通过以下步骤完成: 1. 数据绑定与响应式更新 通过 Object.defineProperty 或 Pr…