黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

hello,everyone!" />

webkit中 Frame對象分析

系統 2572 0

webkit中 Frame對象分析

Frame應該是整個webcore里面最核心的對象之一,前面在講Page對象的文章中,也提到過,從Page的角度來看,其實一個Page就是由一個或者多個Frame構成,而這些Frame是以樹狀的關系組織,我們來看一段HTML代碼

  1. <html>
  2. <body>
  3. hello,everyone!
  4. <iframesrc= "..." />
  5. <iframesrc= "..." />
  6. </body>
  7. </html>

在以上的html代碼中,一個Page里面就會有三個Frame,首先任何一個Page都會至少對應一個Frame,也就是rootFrame,這個Frame不對應iframe節點(Frame中的m_ownerElement對象為空),也是frame樹的根節點,還有兩個iframe標簽對應兩個Frame,如果在iframe的屬性src里面指定的頁面中還含有iframe標簽的話,那么也會對應一個frame(一個iframe標簽對應一個frame),這樣frame之間就形成了父子關系

以下是Frame的一個類圖關系

webkit中 Frame對象分析

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

1. Page

Page前面文章中已經提到過。這里表示Frame所在的Page是哪個

2. EventHander

事件處理者,我們在網頁上(確切的說是在一個frame上)點擊一個按鈕,或者移動鼠標,首先底層會將該事件截獲然后報給WebView(Page專題中有提到),然后通過Page找到RootFrame,將該事件交給RootFrame的EventHandler,RootFrame的EventHandler如果發現其所在Frame有subFrame,會交給subFrame的EventHandler來處理,如果處理成功就返回,否則自己繼續處理。

3.FrameView

FrameView對應著一個Frame的顯示,這個數據結構也是與render引擎連接的紐帶,該結構里面有一個非常重要的接口,叫 layout, 接口里面的內容就是render dom樹的過程。也有一個非常重要的數據成員 RenderObject* mlayoutRootObject;表示render樹的根節點.

在32平臺FrameView是繼承自ScrollableView

4.ScriptController

腳本相關操作的入口,我們知道,一個頁面可以執行很多js函數,這個結構就是與js腳本相關的一個對象。

5 Document

表示一個文檔,一個html頁面解析完成,會形成一個dom樹(相關的知識請看dom規范),該結構就是表示html頁面解析完成后的結構,每個標簽都會在document上對應一個節點,這也是非常核心的一個數據結構,從MVC的角度來看,應該是M部分。

6 DOMWindow

在bom規范中,js可以訪問一個對象,window(bom規范定義了一系列的標準接口),通過該window的接口,js用戶可以動態的控制頁面的內容,DOMWindow就是表示那個window接口的實現,用一個UML的圖來表示,可以表示成如下

webkit中 Frame對象分析

7. FrameLoader

頁面加載器,與頁面相關的加載都由其負責,里面又包含了很多其他的對象,這也是非常重要的一個對象,后面會專門討論。

webkit中 Frame對象分析


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論