说js时间线之前先简单的思考一下html页面的渲染过程
js是逐行运行的解释性单线程语言
那么运行代码则会出现一些先后顺序,这些顺序组成的流程就成了时间线。
DOM树在加载过程中一共有三种阶段:
document.onreadystatechange = function(){
console.log(document.readyState);
}
这三个阶段有一个详细的过程
document.readyState= 'loading’
创建document对象,开始解析web页面。创建HTMLHtmlElement对象,添加到document中。
遇到link外部css,创建线程加载,并继续解析文档
遇到script外部js,并且没有设置async、defer,阻塞,等待js加载完成并执行该脚本,然后继续解析文档
(并发过程:)遇到script外部js,并且设置有async、defter,浏览器创建线程加载,并继续解析文档。禁止使用doucument.write
async属性的脚本,脚本加载完成后立即执行。
defter属性的脚本==丢置尾部。
document.createElement(‘script’)的方式动态插入script元素来模拟async属性,实现脚本异步加载和执行。
遇到img等,浏览器创建线程加载,并继续解析文档。
document.readyState = 'interactive’
文档已解析完成(dom树已经绘制完成) 文档解析完成后,所有设置有defer的脚本会按照顺序执行。(注意与async的不同)
document对象触发DOMContentLoaded事件
document.readyState = 'complete’
当所有async的脚本加载完成并执行后、img等加载完成后,document.readyState = ‘complete’,window对象触发load事件。禁止使用doucument.write
以异步响应方式处理用户输入、网络事件等。
Children of the Candy CornTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8508 Accepted: 3729DescriptionThe cornfield maze is a popular Halloween treat. V
最近编写一个多线程爬取的小脚本,遇到’list’ object is not callable这个错误,发觉不对,我并没有list的这个函数啊,怎么会出现这个错误呢,于是Google大法,发现问题所在,在此将解决问题的过程记录下,方便以后查看。错误代码如下:file = open('1.txt','r')threads = []for line in file: thread = thr
问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。输入格式 n,k输出格式 一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}数据规模和约定 6<n<=200,2&lt...
■ 定义<dl>标签用于定义描述列表(或定义列表)自定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号dl代表单词Definition List,意为定义列表dt代表单词Definition Term,意为定义术语dd代表单词Definition Description,意为定义描述■ 使用说明该标签会与<dt>(定义项目/名字)和...
不知不觉一年就又结束了,整理完才感叹我已经做过这么多题了吗,希望能帮到你,加油呀(有一些可能有重复)有什么问题记得留言哦
问题描述:网站的页面提交需要用到KindEditor来进行富文本提交。在编辑文章时,需要用到空格来进行排版,每次提交保存到数据库后,在页面显示没问题,但从后台进行第二次修改编辑的时候,空格不在了。问题解决:问题出在从数据库读出数据后,再次放入富文本编辑器的时候。从数据库读出来的内容要做一下替换后再放到textarea标签之中,替换的代码如下 String content=re
OverviewNSData and its mutable subclass NSMutableData provide data objects, object-oriented wrappers for byte buffers. Data objects let simple allocated buffers (that is, data with no embedded po
-- 创建几何表CREATE table geometry_table( gid serial primary key, name varchar, geom geometry(geometry,4326));-- 查询当前数据库中所有空间数据表的描述信息select * from geometry_columns-- 查询几何表select * from geome...
桌面安全管理系统是基于企业电脑桌面端的内网安全管理软件系统。一般分为桌面端应用策略管理、远程桌面维护、网络访问策略、移动存储设备管理、系统补丁统一分发和企业资产管理等等功能。企业桌面安全管理系统的出现一部分原因是为了弥补杀毒软件的不足而产生的市场需求。传统企业信息安全管理中,杀毒软件占据非常重要的位置,但即使是现在杀毒软件安装和升级即时的情况下,企业信息安全也很难完全保障。首先,杀毒软件目前无法查
在DNN中常用的布局经常会用到表格布局,虽然table对css的支持不咋地,但是对于传统的asp.net程序员来说这还是绕不开的坎。在时下流行的bootstrap中对table元素也有很好的支持。那DNN7中对Table的支持怎么样呢?还是先看看我原来后台管理模块中Table悲催的样式--当然也是我偷懒的结果^_*然后再看看我在应用DNN7中针对table元素的css样式后的界面(还是
命令 sudo apt-get install ntfs-3g //安装ntfs-3gsudo ntfsfix /dev/sda5 //对盘符D进行修复sudo ntfsfix /dev/sda6//对盘符E进行修复