DOM和js是在一个线程中执行吗?

来源:4-2 单线程 - 介绍-1

啦啦儿

2020-08-04

有个场景,需要新加一个link标签,里面下载一个css文件,css会改变DOM的宽高,然后js去获取DOM的宽高,常常拿不到正确的值, 这说明DOM重绘完成可能在js执行之后。
视频中说DOM和js是单线程是不是有点矛盾
怎么样才能保证js在css加载之后DOM重绘完成执行呢?

写回答

1回答

双越

2020-08-05

根本原因是: css 文件要异步加载。

试想一个极端的场景,你的网速很慢,css 加载时间很久,要 10 分钟才能加载完(实际不可能,先假设)。那你去用 js 获取,肯定得不到正确的值。

那如何知道 link 中 css 加载完成了呢?目前也没有啥好办法。


所以,我建议你换一种思路。用 js 获取 css 的文本内容,然后把 css 内容加到 style 标签中。即用 style ,不用 link 。这样就可以了。

0
3
双越
回复
啦啦儿
是的。
2020-08-05
共3条回复

前端跳槽必备 一线互联网公司高级前端JavaScript面试

视频讲解前端面试中的JS高级知识点,扩展JS知识深度,从容面试

1621 学习 · 218 问题

查看课程