1. 程式人生 > >Webkit初始化以及載入URL過程中各種對象的建立時序以及DOM樹的建立詳情分析

Webkit初始化以及載入URL過程中各種對象的建立時序以及DOM樹的建立詳情分析

沒有 chrom 本地 .net 時間 詳情 request avi ng-click

? ? ? ? 眾所周知,Webkit須要創建DOM樹。

為此它須要創建WebView, Chrome,Page,Frame, Document。 Document Parser, DOM Tree Builder(DOM樹的建造引擎)。ScriptRunner。 Resource Handle等等對象。?

? ? ? ? 同一時候,還須要創建為上面這些對象服務或者與之通信的支持對象。比方:與本地窗體相關的ChromeClient, 與FrameLoader事件相關的FrameLoaderClient,為Document服務的Document Loader、DocumentWriter及DocumentParser。 分析HTML頁面詞語的HTMLMetaChractorParser、HTMLTokenizer;語法分析器服務的HTMLParserScheduler。為DOM樹建立服務的HTMLConstrctionSite。為網絡資源請求服務的ResourceLoader等等。

? ? ? ? 當然,除了這裏列出的對象之外,還有很多對象比方SubResourceLoader等等沒有全列出。那麽,這麽多對象是啥時候創建的呢?按時間排序,我把她們排列例如以下:

WebView->ChromeClient->Chrome->Page->FrameLoaderClient->FrameLoader->Frame->

PolicyChecker->DocumentLoader->DocumentWriter->Document->HTMLDocumentParser->

TextResourceDecoder->HTMLMetaChractorParser->HTMLTokenizer->HTMLScripRunner->HTMLParserScheduler->

HTMLTreeBuilder->HTMLConstructionSite->HTMLElementFactory->MainResourceLoader->ResourceHandle

? ? ? ? ?具體的創建細節我畫了兩個時序圖:

圖一:初始化時(發起網絡請求Request之前)各對象的創建

技術分享圖片

圖二:發起網絡請求(Request)之後各種對象的創建以及DOM樹的建立具體情況

技術分享圖片


? ? ? ? 下一篇講講詞法分析器的工作過程。

Webkit初始化以及載入URL過程中各種對象的建立時序以及DOM樹的建立詳情分析