日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebKit Frame对象分析

發(fā)布時(shí)間:2024/4/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebKit Frame对象分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Frame應(yīng)該是整個(gè)webcore里面最核心的對(duì)象之一,前面在講Page對(duì)象的文章中,也提到過,從Page的角度來看,其實(shí)一個(gè)Page就是由一個(gè)或者多個(gè)Frame構(gòu)成,而這些Frame是以樹狀的關(guān)系組織,我們來看一段HTML代碼

[css]?view plaincopy
  • <html>??
  • ??<body>??
  • ????hello,?everyone!??
  • ?????<iframe?src="..."/>??
  • ?????<iframe?src?="..."/>??
  • ??</body>??
  • </html>??
  • 在以上的html代碼中,一個(gè)Page里面就會(huì)有三個(gè)Frame,首先任何一個(gè)Page都會(huì)至少對(duì)應(yīng)一個(gè)Frame,也就是rootFrame,這個(gè)Frame不對(duì)應(yīng)iframe節(jié)點(diǎn)(Frame中的m_ownerElement對(duì)象為空),也是frame樹的根節(jié)點(diǎn),還有兩個(gè)iframe標(biāo)簽對(duì)應(yīng)兩個(gè)Frame,如果在iframe的屬性src里面指定的頁面中還含有iframe標(biāo)簽的話,那么也會(huì)對(duì)應(yīng)一個(gè)frame(一個(gè)iframe標(biāo)簽對(duì)應(yīng)一個(gè)frame),這樣frame之間就形成了父子關(guān)系

    以下是Frame的一個(gè)類圖關(guān)系

    ?

    其中有很多非常重要的對(duì)象,下面我們挑出幾個(gè)來分析

    1. Page

    Page前面文章中已經(jīng)提到過。這里表示Frame所在的Page是哪個(gè)

    2. EventHander

    事件處理者,我們?cè)诰W(wǎng)頁上(確切的說是在一個(gè)frame上)點(diǎn)擊一個(gè)按鈕,或者移動(dòng)鼠標(biāo),首先底層會(huì)將該事件截獲然后報(bào)給WebView(Page專題中有提到),然后通過Page找到RootFrame,將該事件交給RootFrame的EventHandler,RootFrame的EventHandler如果發(fā)現(xiàn)其所在Frame有subFrame,會(huì)交給subFrame的EventHandler來處理,如果處理成功就返回,否則自己繼續(xù)處理。

    3.FrameView

    FrameView對(duì)應(yīng)著一個(gè)Frame的顯示,這個(gè)數(shù)據(jù)結(jié)構(gòu)也是與render引擎連接的紐帶,該結(jié)構(gòu)里面有一個(gè)非常重要的接口,叫layout, 接口里面的內(nèi)容就是render dom樹的過程。也有一個(gè)非常重要的數(shù)據(jù)成員 RenderObject* mlayoutRootObject;表示render樹的根節(jié)點(diǎn).

    在32平臺(tái)FrameView是繼承自ScrollableView

    4.ScriptController

    腳本相關(guān)操作的入口,我們知道,一個(gè)頁面可以執(zhí)行很多js函數(shù),這個(gè)結(jié)構(gòu)就是與js腳本相關(guān)的一個(gè)對(duì)象。

    5 Document

    表示一個(gè)文檔,一個(gè)html頁面解析完成,會(huì)形成一個(gè)dom樹(相關(guān)的知識(shí)請(qǐng)看dom規(guī)范),該結(jié)構(gòu)就是表示html頁面解析完成后的結(jié)構(gòu),每個(gè)標(biāo)簽都會(huì)在document上對(duì)應(yīng)一個(gè)節(jié)點(diǎn),這也是非常核心的一個(gè)數(shù)據(jù)結(jié)構(gòu),從MVC的角度來看,應(yīng)該是M部分。

    6 DOMWindow

    ?在bom規(guī)范中,js可以訪問一個(gè)對(duì)象,window(bom規(guī)范定義了一系列的標(biāo)準(zhǔn)接口),通過該window的接口,js用戶可以動(dòng)態(tài)的控制頁面的內(nèi)容,DOMWindow就是表示那個(gè)window接口的實(shí)現(xiàn),用一個(gè)UML的圖來表示,可以表示成如下

    7. FrameLoader

    頁面加載器,與頁面相關(guān)的加載都由其負(fù)責(zé),里面又包含了很多其他的對(duì)象,這也是非常重要的一個(gè)對(duì)象,后面會(huì)專門討論。

    與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的WebKit Frame对象分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。