2013-04-17 24 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