DOM和js是在一个线程中执行吗?
来源:4-2 单线程 - 介绍-1
啦啦儿
2020-08-04
有个场景,需要新加一个link标签,里面下载一个css文件,css会改变DOM的宽高,然后js去获取DOM的宽高,常常拿不到正确的值, 这说明DOM重绘完成可能在js执行之后。
视频中说DOM和js是单线程是不是有点矛盾
怎么样才能保证js在css加载之后DOM重绘完成执行呢?
写回答
1回答
-
根本原因是: css 文件要异步加载。
试想一个极端的场景,你的网速很慢,css 加载时间很久,要 10 分钟才能加载完(实际不可能,先假设)。那你去用 js 获取,肯定得不到正确的值。
那如何知道 link 中 css 加载完成了呢?目前也没有啥好办法。
所以,我建议你换一种思路。用 js 获取 css 的文本内容,然后把 css 内容加到 style 标签中。即用 style ,不用 link 。这样就可以了。
032020-08-05
相似问题