script 标签中 defer 和 async 的区别
https://www.cnblogs.com/huangtq/p/18422775
在 <script> 标签中,defer 和 async 是两个用于控制 JavaScript 脚本加载和执行行为的属性。它们的主要区别在于加载顺序和执行时机。具体如下:
1. defer 属性
- 加载方式: 使用
defer的脚本在 HTML 解析的同时异步加载。 - 执行顺序: 所有带有
defer的脚本会按照它们在页面中的出现顺序依次执行。 - 执行时机: 脚本会在 HTML 文档解析完毕后执行,也就是在
DOMContentLoaded事件触发之前,但不会阻塞页面的解析。 - 适用场景: 当脚本依赖于 DOM 结构时,使用
defer是理想的,因为它保证了脚本执行时 DOM 已经完全加载完成。
例子:
<script src="example.js" defer></script>
2. async 属性
- 加载方式: 使用
async的脚本也会异步加载,与 HTML 解析同时进行。 - 执行顺序: 脚本会在加载完成后立即执行,不保证按照它们在页面中的出现顺序执行。
- 执行时机: 一旦脚本加载完成,就会立即执行,可能会在 HTML 解析完成之前执行,也可能在解析过程中执行。
- 适用场景: 用于独立、不依赖于其他脚本或 DOM 内容的脚本,例如分析工具或广告脚本,因为它们可以尽快执行而不影响页面的解析。
例子:
<script src="example.js" async></script>
区别总结:
- 加载顺序:
async无序(哪个脚本先加载完哪个先执行),defer有序(按照 HTML 中的顺序执行)。 - 执行时机:
async脚本一旦加载完成立刻执行,defer脚本会在 HTML 解析完成之后执行。
执行时机图示:
- 普通
<script>标签:同步加载,立即阻塞 HTML 解析,加载完毕后执行。 defer脚本:异步加载,不阻塞 HTML 解析,等 HTML 全部解析完后按顺序执行。async脚本:异步加载,不阻塞 HTML 解析,但加载完毕后立即执行,且无序。
哪个更好?
- 当脚本依赖于页面的 DOM 结构时,使用
defer更安全。 - 当脚本与其他脚本和页面结构无关时,可以使用
async以加快加载和执行速度。
script 标签中 defer 和 async 的区别的更多相关文章
- script标签中defer和async的区别(稀土掘金学习)
如果没有defer或async属性,浏览器会立即加载并执行相应的脚本.它不会等待后续加载的文档元素,读取到就会开始加载和执行,这样就阻塞了后续文档的加载. 下图可以直观的看出三者之间的区别: 其中蓝色 ...
- script标签中defer和async属性的区别
这篇文章来源于JS高级程序设计第三版中关于script标签的介绍,结合查阅的资料写下的学习笔记. 向html页面中插入javascript代码的主要方法就是通过script标签.其中包括两种形式,第一 ...
- HTML <script> 标签的 defer 和 async 属性
HTMKL <script>标签中有defer和async属性,简单介绍一下两者的区别吧. 普通的script标签会让浏览器立即下载并执行完毕,执行也是按照先后顺序,再进行后面的解析. ...
- script标签的defer、async属性
之前一直对script标签的defer.async属性一知半解,直到看到了论坛上某大神发的图片,茅塞顿开!!!!!
- HTML中script 标签中的那些属性
在HTML中, <script> 标签用于嵌入或引用JavaScript代码. 在 <script> 标签中,有两个属性可以用来控制脚本的加载和执行方式: async 和 de ...
- <script>标签里的defer和async属性 区别(待补充)
defer与async的区别(表格显示): table th:first-of-type { width: 150px; } table th:nth-of-type(2) { } 区别 defer ...
- script标签中的async、defer属性
Script标签是我们常用的引用js脚本的一种方式. 撸代码的时候,我们常常只写src属性,直接忽略其他属性. 最近发现了2个可以利用的属性:async.defer. 顾名思义async就是异步,在不 ...
- url,href和src的区别,defer和async的区别
URL(Uniform Resource Locator):统一资源定位符,互联网上的每个文件都有一个唯一的URL,基本URL包含协议,IP地址,路径和文件名. 重点:herf和src的区别 href ...
- 关于html中的 script标签中的 代码写法有效性? easyui tabs的href不能载入内容页面
script标签, 即 html中的 js脚本区域中: 它其实就是一个 普通的 html标签, 在 html 渲染器 parser 看来, 它跟其他任何的普通 的 html标签 , 比如 p 标签, ...
- javaScript中的小细节-script标签中的预解析
首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...
随机推荐
- Dapr-3: 从 20000 英尺之上俯瞰 Dapr
第 3 章 从 20000 英尺之上俯瞰 Dapr Dapr at 20,000 feet | Microsoft Docs 在第 1 章中,我们讨论了分布式微服务应用的吸引力.但是,我们也指出了它会 ...
- 中电金信:零售经营“新赛道” ——基于手机银行APP专区调研的客群精细化运营分析报告
随着银行业竞争的不断深入及新客户增量日渐"到顶",各家银行的客群竞争逐渐由"跑马圈地"进入"精耕细作"的新阶段,在客群精准化服务方面不断深 ...
- 鲲鹏cpu
cat /etc/openEuler-release sudo dmidecode -t processor |grep Version lscpu
- mongo docker compose
49dSsULIAv6NiP8hdqqbapRTHVx9BRYU4VVakN9A4FJWV0KufqEm/UoTUvn9Z4eg FRP7iHXF6Qiou5MK2Ak76zRBU7MOIVCl0DI ...
- Qt音视频开发25-ffmpeg音量设置
一.前言 音视频的播放.关闭.暂停.继续这几个基本功能,绝大部分人都是信手拈来的搞定,关于音量调节还是稍微饶了下弯弯,最开始打算采用各个系统的api来处理,坐下来发现不大好,系统的支持不完美,比如有些 ...
- 网页开发中使用javascript语言时浏览器操作时弹出错误:Uncaught TypeError: Cannot set property 'onClick' of null。
在Chrome浏览器下,遇到了这个错误提示:Uncaught TypeError: Cannot set property 'onClick' of null. 先贴一下JS的代码: document ...
- [炼丹术]YOLOR目标检测训练模型学习总结
YOLOR目标检测训练模型学习总结 性能测试 python test.py --data data/cocoaml --img 320 --batch 8 --conf 0.001 --iou 0.6 ...
- Docker 迁移数据目录
Centos7 环境,采用yum安装的,默认数据目录在/var/lib/docker中 1. 关闭docker服务 systemctl stop docker 2. 备份和迁移 # 迁移 cp -r ...
- Solution Set - “带我去看极光与大海吧”
目录 0.「AGC 062C」Mex of Subset Sum 1.「THUPC 2021 初赛」「洛谷 P7136」方格游戏 2.「THUPC 2023 初赛」「洛谷 P9139」喵了个喵 II ...
- Java生成Word文档之 XDocReport 和 Poi-tl
近期参与的多个项目中,均涉及根据预定义模板生成Word文档以供前端下载的需求.以往,我们通常采用将Word文档转换为XML格式,并通过代码赋值变量的方式来实现这一功能.尽管此方法在技术层面可行,但当面 ...