2013-04-17 25 views
1

我想知道HTML解析器的解析顺序。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(即HTML解析器解析的后续行iframe标签虽然iframe src(在这个例子中,page2.html)还没有下载)。 所以,问题是,当page2.html被解析? 换句话说,当div元素(id = y)被添加到DOM树? 在完成page2.html的blockinig page1.html解析之后立即解析page1.html中的代码或完成之后完成吗?或者,HTML解析器并行解析page1.html和page2.html(同时)?

任何意见和链接,将不胜感激。 谢谢!

(如果有错题,请让我知道,其实,我是新来的JavaScript和HTML)

+2

只是好奇,你为什么在意? –

+0

假设page1.html中有一个访问page2.html中定义的对象的函数。该函数可以访问未定义的东西取决于解析顺序 – freddy

+0

你看过https://developer.mozilla.org/en-US/docs/DOM/window.postMessage。 –

回答

0

确切时间取决于浏览器。在page2准备就绪之前,应先下载并准备好page1。但是,在开始下载和解析page2之前,page1尚未准备好。

+0

下垂者请让我知道为什么? – Mooseman

+0

我没有downvote,但你的第二句似乎取决于对'page1'和'page2'的相对大小的未说明的假设。 –

0

事情的实际顺序依赖于浏览器,但在典型的浏览器中,它首先在您正在访问的页面中构建HTML树,然后对其进行处理。当它处理iframe时,它会去并请求该页面。现在

,这是一个事实,即HTML是从服务器块从部分树下载,那么复杂,它可能会开始下载来自iframe的内容甚至见过半页的前1

但是,外带是你不应该依赖这种行为。

+0

你能解释得更清楚吗?我的问题的答案是什么:)? – freddy

+0

@freddy你的问题在答案中解释:你不能确定。不要依赖这种行为。如果您需要知道,您可以添加eventListeners。 – jjl