1

我想知道 HTML 解析器的解析顺序。

给定两个 html 文件:

page1.html

<html>
<body>
<iframe id="x" src="page2.html"></iframe>
<div id="z"></div>
<--! something that need to be parsed -->
</body>
</html>

page2.html

<html>
<body>
<div id="y">
<body>
</html>

我知道 iframe 标记会并行下载 src(即,虽然 iframe src(在示例中为 page2.html)尚未下载,但 HTML 解析器会解析 iframe 标记的后续行)。所以,问题是,什么时候解析 page2.html?换句话说,当 div 元素 (id=y) 添加到 DOM 树时?是在解析page1.html中的代码后完成还是在通过blockinig page1.html解析完成page2.html下载后立即完成?或者,HTML 解析器是否并行(同时)解析 page1.html 和 page2.html?

任何评论和链接将不胜感激。谢谢!

(如果有错误的问题,请告诉我。实际上,我是 JavaScript 和 HTML 的新手)

4

2 回答 2

0

确切的时间取决于浏览器。page1应该先下载并准备好,然后才page2准备好。但是,page1在开始下载和解析之前还没有准备好page2

于 2013-04-17T13:18:45.627 回答
0

实际完成的顺序取决于浏览器,但在典型的浏览器中,它首先在您正在访问的页面中构建 HTML 树,然后对其进行处理。当它开始处理 iframe 时,它​​将去请求该页面。

现在,由于 HTML 是从服务器以块的形式下载的,因此这很复杂,因此从部分树中,它可能会在看到第 1 页的一半之前就开始从 iframe 下载内容。

不过,要点是您不应该依赖这种行为。

于 2013-04-17T13:20:37.547 回答