当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js图片轮播的实现

js图片轮播的实现

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

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…