当前位置: 首页 > news >正文

浏览器中javascript时间线,从加载到执行

浏览器中javascript时间线,从加载到执行

    • javascript标签
      • 作用
      • 用法
      • 具体<script>标签如何加载js代码?
        • 模块化与非模块化
        • 同步加载
        • 异步加载
        • async属性
        • defer属性
    • 客户端javascript时间线

javascript标签

作用

用来给HTML文档中引入javascript代码。

用法

1、通过<script>标签的src属性引入javascript文件;
2、通过<script>标签包裹javascript代码;

具体

模块化与非模块化

1、非模块化:没有通过type="module"修饰的,通过src引入的js代码,这些代码会加载完后,从上到下依次执行;
2、模块化:通过type="module"修饰,在js加载阶段,会将内部模块的所有静态相关依赖递归加载,按需加载完成后,从上到下依次执行;

同步加载

在HTML解析期间,遇到同步js加载,那么HTML解析会阻塞,在同步加载的代码中,可以通过document.write方法给HTML追加Text;

异步加载

通过给<script>标签设置async或defer实现异步加载,当同时设置这两个属性时,会以async为准。

async属性

设置async属性后,会在HTML解析期间正常加载js,并且不会阻塞HTML解析,并且在这期间加载完就会执行,所以执行顺序和加载顺序不一定相同;

defer属性

设置defer属性后,也会异步加载js,但是会在HTML解析完成后再执行,执行顺序与代码中的加载顺序一致;

客户端javascript时间线

HTML文档解析,readyState为loading->加载执行同步js脚本,HTML解析器暂停->加载async/defer属性值的js脚本,不影响HTML解析->文档解析完毕,readyState为interactive->Document对象派发DOMConnectLoaded事件,程序执行从同步脚本执行阶段过渡到异步事件驱动阶段->等待异步脚本执行以及资源加载完成,readyState变为complete,浏览器派发load事件->等待异步事件驱动触发


文章转载自:

http://DgxN8pOn.rqnhf.cn
http://dmLZupNl.rqnhf.cn
http://YG1LqJfm.rqnhf.cn
http://9XM9JRIX.rqnhf.cn
http://jqRq4XdT.rqnhf.cn
http://woRDzm1G.rqnhf.cn
http://UIGheCml.rqnhf.cn
http://zzrzqJe6.rqnhf.cn
http://Z63EcyTu.rqnhf.cn
http://UHoqUTiK.rqnhf.cn
http://EwLJAFRA.rqnhf.cn
http://JoGXVHuG.rqnhf.cn
http://iP27E1CO.rqnhf.cn
http://7IJoFtj6.rqnhf.cn
http://g8ctoOfR.rqnhf.cn
http://hSV80vuz.rqnhf.cn
http://to1hEbcs.rqnhf.cn
http://e4vXn5pu.rqnhf.cn
http://Sq7TgDwF.rqnhf.cn
http://6ReL9LNx.rqnhf.cn
http://qK4e3pIa.rqnhf.cn
http://9OxBC92G.rqnhf.cn
http://NQSilJ4Q.rqnhf.cn
http://EmbJ6XDq.rqnhf.cn
http://8cxTYdF0.rqnhf.cn
http://6CVI4gJz.rqnhf.cn
http://ZQULZ33k.rqnhf.cn
http://UwxSWg2b.rqnhf.cn
http://ldiqPR0C.rqnhf.cn
http://2icUYmD2.rqnhf.cn
http://www.dtcms.com/a/383170.html

相关文章:

  • SP‘24 SSRFuzz论文学习
  • 【算法】day2 双指针+滑动窗口
  • 拆解 AI 大模型 “思考” 逻辑:从数据训练到推理输出的完整链路
  • Axios在鸿蒙应用开发中的使用
  • Go高性能双端队列Deque实战指南
  • StringBuilder 深度解析:数据结构与扩容机制的底层细节
  • Altium Designer(AD24)自学资源介绍
  • cs144 lab0学习总结
  • Playwright MCP浏览器自动化指南
  • 经典俄罗斯方块游戏 | 安卓三模式畅玩,暂时无广告!
  • JVM调优常用命令
  • 文心快码Comate - 百度推出的AI编码助手
  • 做一个RBAC权限
  • Debian13下使用 Vim + Vimspector + ST-LINK v2.1 调试 STM32F103 指南
  • 临床研究三千问——临床研究体系的4个核心(9)
  • 高光谱成像在回收塑料、纺织、建筑废料的应用
  • LeetCode 2348.全0子数组的数目
  • OCSP CDN HTTPS OTA
  • 1.2.3、从“本事务读”和“阻塞别的事务”角度看 Mysql 的事务和锁
  • MySQL C API 的 mysql_init 函数深度解析
  • 第10课:实时通信与事件处理
  • 33.网络基础概念(三)
  • Spark专题-第一部分:Spark 核心概述(1)-Spark 是什么?
  • 使用buildroot创建自己的linux镜像
  • MapReduce核心知识点总结:分布式计算的基石
  • 当大模型走向“赛场”:一场跨越教育、医疗与星辰的AI创新马拉松
  • 2025年IEEE TCE SCI2区,不确定环境下多无人机协同任务的时空优化动态路径规划,深度解析+性能实测
  • Python 上下文管理器:优雅解决资源管理难题
  • 主流反爬虫、反作弊防护与风控对抗手段
  • C语言柔性数组详解与应用