我试图了解HTML在浏览器中何时在屏幕上呈现。
我阅读this S.O. 回答并尝试了一些用例,并观察到一些与链接中共享的模型不相符的内容,
我也似乎无法为观察找到一致的思维模型。
适合所讨论案例的浏览器呈现顺序是什么?
案例A与大多数答案中描述的顺序不一致。 Huray!让我们继续前进。
所以Case-B表明它没有渲染M1,它在渲染之前等待CSS下载。 所以可能渲染器需要在渲染之前知道CSS。
案例:C 图片C
所以从案例B开始,我们假设渲染器可能需要知道CSS 让我们看一下案例C:
修改 建议的思维模型解释了上述行为..(但需要审查/改进)
Script
不是渲染器阻止标记link
是一个阻止标记的渲染器通过上述模型,我们可以解释案例B和案例C:
案例B说明:
同样我们可以干运行 CASE C ,它完全适合上述模型。
我的模特是正确的还是有问题?
答案 0 :(得分:3)
你几乎是对的。 除了它更简单 - 渲染器是被动的,不接收“阻塞信号”。 在有人要求之前,它不会渲染(更新显示以反映dom树)。
您的HTML无效 - 您可能无法将<link rel=...>
放入正文中。 (生活HTML 4.2.4)
如您所知,样式表是 render-blocking 资源 - 它会阻止内容呈现, 与脚本相反,脚本将暂停并呈现已解析的内容。
以下是我将如何解释它:
案例B:M1 - stylesheet - M2 - script - M3
这些行为是故意的。 曾几何时,js很慢,脚本需要很长时间才能运行, 而样式表默认(并且仍然)对于隐藏元素很重要。 时间可能已经改变,但这些行为不太可能改变。
案例C:M1 - script - M2 - link - M3