-- 作者:wangxinxin
-- 發(fā)布時(shí)間:2010-11-29 9:40:35
-- VxWorks體系下PowerPC860處理器串行總線
摘 要: Konqueror/embedded是針對(duì)嵌入式Linux的開(kāi)放源碼瀏覽器,也是符合GNU條款的自由軟件。本文首先對(duì)該瀏覽器技術(shù)核心做了簡(jiǎn)要分析,然后詳細(xì)介紹了Konqueror/embedded在arm-Linux操作系統(tǒng)上的移植和漢化過(guò)程。 關(guān)鍵詞: Konqueror;嵌入式瀏覽器;arm-Linux;移植;漢化
引言 目前,嵌入式瀏覽器已經(jīng)逐漸成為高端手機(jī)和PDA的標(biāo)準(zhǔn)配置。Konqueror/embedded作為嵌入式Linux操作系統(tǒng)的首選瀏覽器得到了廣泛使用。但是由于該瀏覽器是自由軟件,因此向具體嵌入式平臺(tái)移植時(shí)存在一定的難度。本文主要介紹了Konqueror/embedded 向arm-Linux平臺(tái)上的整個(gè)移植和漢化過(guò)程,以便工程師參考和使用。
Konqueror/embedded的結(jié)構(gòu) Konqueror/embedded 是由底層網(wǎng)絡(luò)連接,圖形化用戶界面和處理HTML繪制的引擎KHTML構(gòu)成的。底層的通信協(xié)議實(shí)現(xiàn)是基于KIO/slave機(jī)制來(lái)實(shí)現(xiàn)的;GUI界面采用 Kparts組建技術(shù)和Qt的基本構(gòu)件;而作為Konqueror/embedded的核心,KHTML則運(yùn)用了文檔對(duì)象模型(DOM)所提供的API接口,并在DOM樹(shù)上掛接javascript引擎,CSS解析器以及渲染引擎。Konqueror/embedded的層次結(jié)構(gòu)如圖1所示。
 圖1 Konqueror/embedded層次結(jié)構(gòu)
Kparts及Qt構(gòu)件實(shí)現(xiàn)GUI 為了方便地實(shí)現(xiàn)將現(xiàn)有應(yīng)用作為一個(gè)控件插入到另外一個(gè)應(yīng)用中去,采用了part對(duì)象負(fù)責(zé)管理整個(gè)應(yīng)用和窗口。對(duì)于每個(gè)窗口又采取了類似 微軟 MFC 中的 Doc-View 結(jié)構(gòu)。因此在將應(yīng)用嵌入到另外一個(gè)應(yīng)用中的時(shí)候,只需要獲得part中的接口和數(shù)據(jù)即可。對(duì)窗口的一切操作的響應(yīng)由被嵌入應(yīng)用的 part 對(duì)象來(lái)完成,而類 Doc-View 結(jié)構(gòu)只負(fù)責(zé)顯示和保存數(shù)據(jù)即可。
由于Konqueror/embedded是基于圖形庫(kù)Qt/E,因此也遵循了signal、slot消息機(jī)制,Konqueror/embedded作為Qt/E的一個(gè)標(biāo)準(zhǔn)應(yīng)用程序進(jìn)行輸入/輸出及界面消息響應(yīng)。
執(zhí)行DOM 模塊 DOM 模塊對(duì)經(jīng)過(guò)解析的標(biāo)記進(jìn)行語(yǔ)法檢查,并把屬性看作節(jié)點(diǎn),按照標(biāo)記的語(yǔ)義包含關(guān)系以及先后順序組織成DOM樹(shù)。它給HTML 文檔定義了一個(gè)與平臺(tái)無(wú)關(guān)的程序接口,使用該接口可以控制文檔的內(nèi)容、接口和樣式。
在執(zhí)行DOM模塊的過(guò)程中,瀏覽器將所有從語(yǔ)法語(yǔ)義解析模塊中獲得的標(biāo)記和屬性,按照一定的層次結(jié)構(gòu)組織成DOM 樹(shù)。完成DOM 樹(shù)的構(gòu)筑后,DOM 模塊會(huì)同時(shí)把標(biāo)記和屬性以對(duì)象的形式傳給綁定模塊和腳本引擎模塊。
執(zhí)行I/O模塊 瀏覽器加載有關(guān)的I/O文件,對(duì)HTTP等協(xié)議進(jìn)行解析。語(yǔ)法語(yǔ)義解析模塊的解析功能分為兩部分:對(duì)接收到的字節(jié)流進(jìn)行分詞,解析為關(guān)鍵字;調(diào)用解析器檢驗(yàn)關(guān)鍵字是否合法,若是合法的關(guān)鍵字,則按照規(guī)則插入到DOM 樹(shù)中。
|