总结:浏览器解析html与执行JS之生命周期详解
总结:浏览器解析html与执行JS之生命周期详解
- 一·浏览器解析html的生命周期:
- 1.请求HTML文档:
- 2·接收响应:
- 3·构建DOM树:
- 4·加载外部资源:
- 5·DOMContentLoaded事件:
- 6·样式计算与布局:
- 7·绘制与渲染:
- 8·后续交互与事件循环:
- 9·资源加载完成与load事件:
- 10·卸载与垃圾回收:
- 二·浏览器执行JS的生命周期:
- 1.下载和解析HTML:
- 2.处理脚本标签:
- 3.DOMContentLoaded事件:
- 4.加载外部资源:
- 5.load事件:
- 6.执行事件处理程序和用户交互:
- 7.卸载页面:
- 三·相关参考文献:
- 1.JS高级:浏览器运行前端项目的原理及流程
- 2.js浏览器页面生命周期,以及各个阶段js调用示例:
一·浏览器解析html的生命周期:
1.请求HTML文档:
当用户输入URL或者点击链接时,浏览器向服务器发起HTTP(或HTTPS)请求以获取HTML文档数据。
2·接收响应:
服务器将HTML内容返回给浏览器,浏览器开始接收数据流。
3·构建DOM树:
浏览器接收到HTML内容后,开始解析这些文本并将其转换成DOM(Document Object Model)树结构。在这个过程中,浏览器会从上到下逐行读取HTML代码,并创建相应的DOM节点。
4·加载外部资源:
(1)在解析HTML的同时,浏览器遇到< script>、<link>(样式表)、<img>、<video>、<audio>等标签时,会根据需要异步下载CSS、JavaScript和其他媒体文件。
(2)如果遇到没有async或defer属性的<script>标签,浏览器会暂停DOM构建来执行脚本,等待脚本执行完成后再继续构建DOM。
5·DOMContentLoaded事件:
当初始HTML文档被完全加载和解析,DOM树构建完成后,浏览器会触发DOMContentLoaded事件。这意味着DOM已经准备好,但不保证所有外部资源如图片、样式表等已加载完毕。
6·样式计算与布局:
浏览器接着进行样式计算(包括CSSOM树构建),确定每个DOM元素的具体样式,并基于计算出的样式进行布局操作(也称为回流或重排layout/reflow)。
7·绘制与渲染:
最后,浏览器将布局后的各个部分按照正确顺序绘制到屏幕上,这一过程可能涉及多个步骤,包括合成层处理、绘制以及GPU加速渲染等。
8·后续交互与事件循环:
页面加载完毕后,浏览器进入事件循环阶段,监听用户的交互以及其他异步事件,例如网络请求完成、定时器到期等,并根据事件做出相应更新。
9·资源加载完成与load事件:
所有资源(包括样式表、图片、字体等)全部加载完成后,浏览器会触发window对象上的load事件,标志着整个页面的加载过程结束。
10·卸载与垃圾回收:
当用户离开当前页面时,浏览器会停止渲染当前页面,并开始卸载相关的资源和执行必要的清理工作,如垃圾回收机制回收不再使用的内存对象。
注意:在整个html生命周期中,浏览器会持续监控网络状态、内存使用情况以及用户交互,以便及时响应和更新页面内容。
二·浏览器执行JS的生命周期:
1.下载和解析HTML:
浏览器接收到HTML文档后,开始解析HTML标记并构建DOM(Document Object Model)树。
2.处理脚本标签:
- 在构建DOM的过程中,浏览器遇到<script>标签时会进行以下操作:
如果没有async或defer属性,浏览器会暂停DOM构建,下载并执行脚本。脚本执行完成后,继续构建DOM。 - 如果有defer属性,浏览器会继续构建DOM,同时下载脚本。DOMContentLoaded事件触发之前,按照脚本在文档中的顺序执行这些脚本。
- 如果有async属性,浏览器会在可用时异步下载脚本,并在下载完成后尽快执行脚本,这可能在DOMContentLoaded事件触发之前或之后。
3.DOMContentLoaded事件:
当初始HTML文档被完全加载和解析,DOM树构建完成时,浏览器会触发DOMContentLoaded事件。这个事件标志着DOM结构已经准备就绪,但不包括样式表、图像和其他外部资源。
4.加载外部资源:
在DOMContentLoaded事件之后,浏览器继续加载页面中的其他外部资源,如样式表、图片、字体等。
5.load事件:
当整个页面的所有内容(包括图像、样式表等所有外部资源)都已加载完毕,浏览器会触发window的load事件。这是页面完全加载的标志。
6.执行事件处理程序和用户交互:
在DOMContentLoaded和load事件之后,JavaScript代码可以注册事件处理程序来响应用户的交互,如点击按钮、滚动页面等。
7.卸载页面:
当用户离开当前页面(通过点击链接、输入新URL或者关闭窗口等方式)时,浏览器会触发beforeunload和unload事件,允许JavaScript执行清理工作,如取消网络请求、保存状态等。
注意:在整个生命周期中,JavaScript代码可以在不同的阶段执行相应的任务,如初始化页面元素、注册事件监听器、处理用户交互、以及在页面卸载前进行必要的清理工作。
三·相关参考文献:
1.JS高级:浏览器运行前端项目的原理及流程
https://blog.csdn.net/Yuanyuan__/article/details/128428923
2.js浏览器页面生命周期,以及各个阶段js调用示例:
https://blog.csdn.net/chehec2010/article/details/119990799
相关文章:
总结:浏览器解析html与执行JS之生命周期详解
总结:浏览器解析html与执行JS之生命周期详解 一浏览器解析html的生命周期:1.请求HTML文档:2接收响应:3构建DOM树:4加载外部资源:5DOMContentLoaded事件:6样式计算与布局:7绘制与渲染…...
aspose通过开始和结束位置关键词截取word另存为新文件
关键词匹配实体类: Data EqualsAndHashCode(callSuper false) public class TextConfig implements Serializable {private static final long serialVersionUID 1L;/*** 开始关键词,多个逗号分隔*/private String textStart ;/*** 结束关键词&#x…...
深入解析美颜SDK:绿幕抠图功能的算法原理
当下,美颜SDK绿幕抠图功能成为许多应用中不可或缺的一环。本文将深入解析美颜SDK中绿幕抠图功能的算法原理,揭示其背后的技术奥秘。 一、什么是美颜SDK绿幕抠图? 美颜SDK的绿幕抠图功能是一种通过计算机视觉技术,将视频或图像中…...
从有向带权图判断最短路径里各目标顶点顺序
对如下有向带权图,若采用迪杰斯特拉(Dijkstra)算法求从源点a到其他各顶点的最短路径,则得到的第一路径的目标顶点是b,第二条最短路径的目标顶点是c,后续得到的其余各最短路径的目标顶点依次是() A.d,e,f B.e,d,f C.f,d,e D.f,…...
鼠标驱动框架:模拟键盘按键
/* 参考: drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> #include <linux/input.h> #include <linux/hid.h>st…...
ES6之Promise的链式调用
✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…...
HTML----JavaScript操作对象BOM对象
文章目录 目录 文章目录 本章要求 一.BOM模型概述 二.BOM核心:window对象 常用属性 常用方法: confirm() 案例 open ()close()案例 setTimeout( ) 案例 setInterval( ) 案例 document对象 练习 本章要求 了解BOM模型掌握BOM模型实际应用 一.BOM模型…...
隆道数智大会回顾|第13期《如何构建绿色产业供应链新生态》(完)
本期演讲嘉宾: 史文月 采购与供应链专家 邢庆峰 品类管理和质量管理专家 刘婷婷 中兴通讯供应链规划总监 张燕华 正大生物CIO 吴树贵 隆道公司总裁 本期演讲主题: 如何构建绿色产业供应链新生态 本期内容要点: 1.供应链管理的核心问…...
粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)
1.csv数据为密西西比数据集,获取数据集可以管我要,数据集内容形式如下图: 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过,需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…...
软性演员-评论家算法 SAC
软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化代码实现 软性演员-评论家算法 SAC 优势原理 DDPG 的问题在于,训练不稳定、收敛差、依赖超参数、不适应复杂环境。 软性演员-评论家算法 SAC,更稳定…...
Nginx多域名部署多站点
目录 1.修改配置文件nginx.conf 2. 修改hosts文件 1.修改配置文件nginx.conf 在配置文件的 server_name 处修改成自己需要的域名,然后保存退出 j 查看语法是否错误,然后重启nginx nginx -t # 查看语法是否正确 systemctl restart nginx # 重启nginx …...
Java的常规面试题
Java的面试题主要涉及Java基础知识、并发编程、集合原理、JVM原理、I/O与网络编程、设计模式、互联网常用框架等多个领域[6]。一些常见的面试问题包括: 1. 面向对象的特征:继承、封装和多态性。 2. 访问修饰符public、private、protected以及默认时的区别…...
大数据技术发展史
文章目录 Google论文HadoopHive大数据生态 Google论文 今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统…...
linux常见基础指令
入门常见基础指令 ls、stat、 pwd 、cd、tree、 whoami、 touch、 mkdir、 rm 、 man、 cp、mv、cat、tac、echo、>、 >>、 < 、more、 less、 head、 tail、date、 cal、 find、 which、alias、whereis、grep、zip与unzip、 tar、bc、uname、xargs... 热键Tab、…...
“人家赚那么多”系列01:如何练习?练什么?
01 如何练习?练习什么? 今年计划重点围绕「在不骗自己的前提下,如何才能把事儿彻底做好,并做得有声有色?」为主题来写点儿东西,聊聊我是怎么做的,如何通过一些有效的方法来不断优化自己的。 想把…...
【Android】使用android studio查看内置数据库信息
要使用Android Studio查看内置数据库信息,可以按照以下步骤进行操作: 打开Android Studio并打开你的项目。 在左侧的Project窗口中,找到并展开你的app模块。 找到并展开"app" > "src" > "main"文件夹。…...
PHP开发日志 ━━ 基于PHP和JS的AES相互加密解密方法详解(CryptoJS) 适合CryptoJS4.0和PHP8.0
最近客户在做安全等保,需要后台登录密码采用加密方式,原来用个base64变形一下就算了,现在不行,一定要加密加key加盐~~ 前端使用Cypto-JS加密,传输给后端使用PHP解密,当然,前端虽然有key有盐&…...
2021-01-03 excel实现列递增,行保持不变
需求:excel文档数据操作的时候发现自动递增只能实现列不变行号递增 我这里里需要的是列递增行不变 解决方式:通过一些函数的组合使用 INDIRECT("驻场明细!"&CHAR(ROW()62)&ROW(驻场明细!A$28)) INDIRECT()函数的使用: INDI…...
[Python]两个杯子取水问题
利用两个杯子巧取三升水: 今天的这个趣味数学小游戏是利用两个没有刻度的水杯,巧妙地取出三升水来。 题目的条件是:一个总容量为6升的杯子和一个总容量为5升的杯子,同时面前有无限容量的水供你使用。不借助其它任何的容器…...
C++汇编语言学习计划
前几天买了某游戏的外挂,感觉外挂在我计算机上进行了不少操作,我想一探究竟,可是只有exe,没办法,翻译成汇编我也看不懂,索性来简单学习下。访问Chatgpt4,给了如下学习计划。 要从零开始学习C生成…...
微信服务号升级订阅号条件
服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠,消息出现在聊天列表中,会像收到消息一样有提醒。而订阅号推送的消息是折叠的,“订阅号…...
SpringBoot整合mybatis多数据源
废话不多说先上结果 对应数据库 首先导入所需的mybatis、mysql和lombok依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependen…...
垃圾收集器与内存分配策略
内存分配和回收原则 对象优先在Eden区分配 大对象直接进入老年代 长期存活的对象进入老年代 什么是内存泄漏 不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出 自动垃圾回收与手动垃圾回收 自动垃圾回收:由虚拟机来自动回收对象…...
Python计算三角形的面积
Python 计算三角形的面积 以下实例为通过用户输入三角形三边长度,并计算三角形的面积: # 三角形第一边长 a 3 # 三角形第二边长 b 4 c float( input("输入三角形第三边长: ") ) # 计算半周长 s (a b c) / 2 # 计算…...
198.【2023年华为OD机试真题(C卷)】万能字符单词拼写(JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-万能字符单词拼写二.解题思路三.题解代码Pytho…...
Tomcat服务为什么起不来?
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 服务跑在Tomcat下面,有时候会遇到Tomcat起不来的情况。目前为止常遇到的情况有如下几种: 1. Tomcat服务…...
计算机网络 VLAN
路由器将多个局域网连接起来,而交换机将一个局域网里的设备连接起来。 路由器的端口分配局域网的网段(子网网段),局域网的内部设备的ip都在这个网段里,再由交换机将数据派发到目的设备,交换机是按照MAC地址…...
docker搭建Dinky —— 筑梦之路
简介 Dinky 是一个 开箱即用 、易扩展 ,以 Apache Flink 为基础,连接 OLAP 和 数据湖 等众多框架的 一站式 实时计算平台,致力于 流批一体 和 湖仓一体 的探索与实践。 主要功能 其主要功能如下: 沉浸式 FlinkSQL 数据开发&#x…...
Python基础(十四、数据容器之集合Set)
文章目录 一、集合语法二、集合的基本操作添加元素删除元素随机删除元素,可获得删除的值清空取出2个集合的差集消除2个集合的差集合并2个集合集合元素个数查询元素是否存在 遍历集合集合的遍历 什么是数据容器? 数据容器是Python中用于存储和操作数据的对…...
OpenHarmony之HDF驱动框架
概述 HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路,让驱动开发和部署更加规范,旨在…...
自己电脑上做的网站 怎么让别人看/杭州网站建设公司
将下面的程序补充完整(包括定义函数),使其能够完成图示的功能。请使用已有程序的风格。/* * Copyright (c) 2014,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:demo.cpp * 完成时间:2014年…...
wordpress广告先显示/网络营销推广策划案例
NEW关注Tech逆向思维视频号最新视频→【乘电梯便能去太空?大胆的航空假设!】7月12日消息,据外媒援引知情人士透露,苹果等多家公司已经要求韩国三星电子旗下显示器制造商Samsung Display加快开发可用于增强现实(AR&…...
政府网站建设做法/百度自然搜索排名优化
一、什么是Web Hook?Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用,正变得越来越有用。简单来说就是一种反向API机制,类似于触发器的一样…...
企业网上推广方式/windows优化大师免费
LeetCode 1401. 圆和矩形是否有重叠 难度 中等 给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。 如果圆和矩形有重叠的部分,请…...
做网站论坛 前置许可/长沙疫情最新数据消息
场景一:类似于微博,实现关注和被关注功能。 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户。当用户A关注用户B的时候,执行两步操作: sadd user:A B sadd user:B A 问题1…...
湖南网络公司网站建设/网络营销代运营外包公司
相比传统的Windows桌面系统,Linux VDA现在还是相对小众,但是在一些设计、开发,用户还是有需求的,所以目前作为虚拟桌面大厂Citrix从去年开始研发Linux VDA,在上个月Linux VDA的Technical preview已经发布了。 目前Citr…...