把资源变成文档树

HTML解析把输入字符流先转成标记,再构建文档树,供后续显示与脚本使用。规范也定义了错误处理,因此浏览器能够显示某个页面,不等于作者写出的源标记完全符合规范。

文档还可以继续取得图片、样式和脚本等资源。网络数据的到达、解析以及脚本修改文档可能交错进行,所以“收到HTML”并不是页面全部工作已完成的唯一时刻。

参考:[1] [3]

文档结构与屏幕布局

样式系统把文档内容组织成用于布局的盒。视口、包含块、文字换行和定位等规则共同确定显示结果;同一份内容在不同屏幕上可以形成不同布局。

因此,页面不是服务器寄来的一张固定图片。文档语义、字体和尺寸约束影响阅读,后续资源或脚本变化也可能要求重新计算部分布局与显示。

参考:[2] [3]

任务调度与文档边界

事件循环协调解析、事件回调及资源到达后的处理。占用同一事件循环过久的工作会推迟其他可运行任务,因此网络传输快,也不能单独保证页面交互立即响应。

浏览器还管理不同文档之间的访问边界,例如对跨来源DOM访问施加限制。能沿链接导航到另一页,与让原页脚本任意读取对方文档,是两种不同能力。

对常见HTTP和HTTPS文档,同源比较主要看方案、主机及规范化端口,而不看路径是否相同。https://example.test/a和同一来源下的/b不会仅因目录不同就获得来源隔离;改变方案、端口或子域,则可能跨源。“同站”又是另一种比较,不能用同属一个注册域来代替同源判断。这些规则约束脚本访问,不是只凭页面外观或经营者名称决定信任。

参考:[3] [4] [5] [6]