html图片显示和夫宽一样,javascript - 浏览器解析html与渲染顺序问题

这篇博客探讨了不同浏览器(Chrome、Firefox和IE11)在HTML渲染和JS执行方面的差异。Chrome在首次加载时等待HTML完全解析后渲染,而刷新时会边解析边渲染,但需达到一定DOM数量。Firefox和IE11在遇到JS(如while(true))时会停止渲染,直到JS执行完毕。alert在Firefox和IE11中被优化,不会阻塞渲染。
摘要由CSDN通过智能技术生成

巴扎黑2017-04-11 11:11:043楼

经过一段测试发现如下结果。

首先是谷歌浏览器。

谷歌浏览器在首次渲染的时候,是等到html全部解析完毕之后才进行页面的渲染,而进行页面刷新操作的时候,谷歌浏览器会对html进行边解析边渲染,但是需要解析一定数量的dom.

测试如下图。

测试代码

浏览器测试

.box1{

color:red;

}

我是天才

1啊是sd第三方s的士大夫f444速度啊分士大夫2222

1啊是sd第三方s的士大夫f速度啊分士大夫222

1啊是sd第三方s的士的士大2222夫士大夫大夫f速度啊分士大夫

var time=+new Date();

while(true){

if(+new Date()-time>3000){

break;

}

}

通过谷歌浏览器的timeline调试工具发现,此时在解析html时并未进行渲染(解析dom数量并未达到一定程度)

在html解析完成之后才进行渲染,

所以大致过程是html解析-->(解析代码数量少不进行渲染)-->遇到(alert或者死循环)-->阻塞-->阻塞结束,渲染页面

e6522865364c7e6f22cc0bf56cd27201.png

e26b4e25851040bd74a20ad53505cfdf.png

而增加HTML代码中的p数量到一定程度时候,在观察timeline发现,当html解析一定程度时就会进行一次渲染

html解析-->(解析代码数量够)-->渲染一部分html-->遇到(alert或者死循环)-->阻塞-->阻塞结束,继续渲染

795d24ace3e3bb532605708daf012d6c.png

0818ca341785650583d187d54f50f156.png

而此次测试使用的firefox和ie11浏览器,对于while(true)的表现是

html解析-->遇到js-->终止渲染-->(死循环)-->循环结束,继续渲染

并未出现边解析变渲染的效果(也就是不管在js之前html解析了多少也不会进行渲染)

而两款浏览器对alert则进行了优化,alert并不会阻断渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值