WebKit HTML解析的新理解與未解問題

2021-06-04 12:23:39 字數 1275 閱讀 7576

2、當解析css的過程雖然不會改變dom,但還是要暫停script的執行,因為script可能會請求,element的style資訊,如果此時css還沒有解析完成,就會取得錯誤的樣式資訊,但webkit只有在指令碼可能請求到未載入的style資訊時,才阻塞指令碼的執行。

3、htmlconstructionsite::attach完成dom樹的構建,同時在這個函式中,會呼叫element的attach函式,將節點加入到rendertree當中。在element的attach函式中,會根據需要建立renderobject,並將renderobject加入到rendertree當中。

困惑的問題

1、指令碼到底在**執行的呢?在htmltreebuilder中只是看到了獲得了指令碼text,但並沒有找到誰來呼叫指令碼的執行

script的執行過程是這樣的:在htmldocumentparser::runscriptsforpausedtreebuilder()函式執行htmlscriptrunner::execute(element,scriptstartposition),進而呼叫htmlscriptrunner::runscript(element,scriptstartposition),在runscript函式中,首先通過toscriptelement函式,將element轉成scriptelement,通過preparescript(scriptstartposition),來構建scriptelement,根據是否立刻執行scirpt來決定是否延遲執行script,如果立刻執行則呼叫scriptelement::executescript(sourcecode),引數是scriptsourcecode型別。在scriptelement::executescript函式中,會呼叫frame->script->evaluate(sourcecode),也就是說呼叫frame中的scriptcontroler::evaluate(sourcecode),而scriptcontroler的實現是與js解析引擎相關的,v8有自己的scriptcontroler的實現。script的執行一定會牽扯到frame,因為script的一些重要函式都是有frame提供的(猜測的hehe)

2、執行指令碼的過程中,什麼地方執行預取操作了呢?還沒有看清楚

3、當解析style時,是如何阻塞script的執行的呢?

4、fragmentparsingcontext作用是什麼?它儲存了乙個指向documenfragment的指標,而且還可以決定是否執行script

5、文件如何載入的?

document類建立時設定了url,document類有frame的例項,不過可以為空,frame有loader

解析新網域名稱發生DNS PROBE FINISHED

買了一台站群伺服器,有五個ip,分別將五個網域名稱解析到五個不同的ip上,網域名稱管理平台是阿里雲,dns管理平台是金山雲。開啟網域名稱後發現報錯 dns probe finished nxdomain 諮詢阿里雲客服結果如下,回到金山雲尋找dns解析設定,新增解析設定 完成解析!或者根據客服需求,...

Batch Normalization的理解體會

網路上對於batch normalization的講解也非常多了,本文主要想記錄下對此的心得體會,並總結下我所理解的bn的優勢。在此先mark一下我認為寫得比較全面的資料 bn的原理 文章1 深度學習 深入理解batch normalization批標準化 bn的 batch normalizati...

解析v model指令,對於剛接觸的比較好理解

1 引入vue src base vue.js 2 概念理解 v model 指令 雙項資料繫結指令 v model指令他只能用在表單域上 輸入框input 核取方塊checkbox。文字框textarea等。表單的修飾符 有3個 1.lazy在預設情況下,v model 在每次 input 事件觸...