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