999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的嵌入式瀏覽器的研究

2011-05-12 02:47:02石功恒陳建勛
網絡安全與數據管理 2011年10期
關鍵詞:引擎嵌入式分析

石功恒,陳建勛

(武漢科技大學 計算機科學與技術學院,湖北 武漢430065)

隨著信息技術與網絡技術的快速發展,以及人們日常生活對網絡信息的需求的不斷增加。掌上電腦、上網本、手機、導航儀器、智能電視、智能家電等對嵌入式系統提出了更多更高的要求。在嵌入式系統中利用嵌入式瀏覽器獲取網絡信息是必不可少的,因此嵌入式瀏覽器技術成為現如今的技術熱點之一。而且Linux操作系統完全開源,可以降低產品開發成本,因此對基于Linux操作系統的嵌入式瀏覽器開發技術的研究有著重要意義。

1 嵌入式瀏覽器的結構

根據嵌入式瀏覽器的[1-2]特點,分析嵌入式瀏覽器的各個部分功能。下面介紹嵌入式瀏覽器的主要功能:(1)詞法分析,主要是對HTML語言進行詞法分析,并且要求HTML詞法分析可以兼容XML等其他標簽語言,達到只需更換語言的元素名稱就可以進行詞法分析的效果;(2)語法分析與布局,在非嵌入式瀏覽器中語法分析是獨立的一個模塊,但是在嵌入式瀏覽器中不作為一個獨立模塊,簡化系統結構,即實現語法分析與布局同步化,節省了語法分析數據存儲的內存空間;(3)嵌入式瀏覽器的用戶界面,設計高效快捷的用戶界面是應用軟件的重要部分;(4)嵌入式瀏覽器JavaScript支持,JavaScript在瀏覽器里主要是用于操縱界面元素并與瀏覽器內部命令進行結合;(5)I/O端,主要是通過HTTP協議和文本系統來讀取頁面信息;(6)控制機制,負責命令響應和消息處理。嵌入式瀏覽器功能結構如圖1所示。

圖1 嵌入式瀏覽器功能結構圖

2 HTML詞法分析

2.1 組成及功能

HTML詞法分析是嵌入式瀏覽器開發[3]的基礎,是整個嵌入式瀏覽器整體設計的最前端部分,HTML詞法分析的數據結構是語法分析與布局的重要依據。HTML詞法分析的效率、準確率以及容錯率的高低在一定程度上決定了整個嵌入式瀏覽器的工作效率。下面對HTML詞法分析的組成和功能進行解析。

HTML詞法分析的功能主要是負責接收從I/O端讀取到的HTML代碼并進行詞法分析,提取網頁中HTML代碼中的各元素信息,按照定義的數據結構保存元素的屬性和名稱等,實現數據的結構化。

根據HTML詞法分析的功能可以解析為幾個組成部分:(1)初始化。完成對數據結構的初始化,主要是分配內存,變量賦初值;(2)主體的數據流分析,逐字符地進行判斷,確定數據的歸屬類型;(3)元素的分析,提取元素的名稱、屬性和值域;(4)釋放,主要是對數據內存空間的釋放。

2.2 算法

根據HTML詞法分析的功能以及組成部分,可以很清晰地得到一個簡單的算法。其算法過程具體如下:

(1)從I/O端讀取的字符串流中,順序讀取一個字符;

(2)如果遇到<,表示將遇到元素,處理該元素(使用元素處理函數來處理該元素),元素處理結束后,指針指向該元素的尾部;

(3)如果遇到空格或回車,則跳過;

(4)如果遇到>,則跳過(因為不可能存在<>這種不包含任何元素的情況,只是為了增強程序的容錯性);

(5)如果遇到的不是上述幾種情況,則遇到的是文字(使用文字處理函數來處理該文字),文字處理結束后,指針指向下一個元素的首部;

(6)循環(1)~(5)步驟,直到 I/O 端讀取的字符串流全部分析完。

根據上述詞法分析算法過程可以得到相應的流程圖,如圖2所示。

圖2 詞法分析算法流程圖

2.3 詞法分析的設計

根據上述提出的詞法分析的算法,通過掃描I/O端讀取的字符串,來檢測字符是否為標簽元素、提取標簽元素屬性等。設計詞法分析的基礎要定義數據結構,為詞法分析算法的實現提供基礎。根據功能需要設計基本的數據結構,定義如下:

char token[]; //標簽元素表

char*tokenPointer; //指向標簽元素表的指針

char chText[]; //字符表

char*chPointer; //字符表指針

char text[]; //字符串表

char*textPointer; //字符串表指針

char textRead[]; //存放待識別的源程序字符串

char*textReadPointer; //讀取字符串指針

char ch; //存放最讀取的源程序字符

char strToken[]; //存放構成單詞符號的字符串

bool flag=false; //是否掃描過一次

3 瀏覽器JavaScript支持

3.1 JavaScript簡介

JavaScript是一種基于對象和事件驅動并具有相對安全性的客戶端腳本語言。它的一個重要功能就是面向對象的功能,通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發。一組包含數據的屬性和對屬性中包含數據進行操作的方法,稱為對象。用戶與網頁交互時產生的操作,稱為事件。事件可以由用戶引發,也可能是頁面發生改變,甚至還有看不見的事件(如Ajax的交互進度改變)。絕大部分事件都由用戶的動作所引發,例如用戶按鼠標的按鍵,就產生click事件,若鼠標的指針在鏈接上移動,就產生MouseOver事件等。在JavaScript中,事件與事件處理程序配套使用。而對事件的處理用addEventListener()函數,它有3個參數:事件、引發的函數以及是否使用事件捕捉。為了保障安全性,將第三個參數始終設置為false。

JavaScript具有幾個特性:能使網頁增加互動性;能使有規律地重復的HTML源代碼簡化,減少下載時間;能及時響應用戶的操作,對提交表單做即時的檢查,無需浪費額外的驗證時間。

3.2 JavaScript引擎

JavaScript引擎一般作為共享庫使用,應用程序調用引擎提供的API函數。引擎API函數大致分為以下幾種:數據類型操作、RunTime控制、類與對象的創建和維護、函數與腳本執行、字符串操作、錯誤處理、安全控制、Debug支持。一般情況下,在應用程序中只需使用某幾類函數。例如,在進行JavaScript調用之前必須調用JS_NewRuntime函數來創建并初始化JavaScript引擎。有些類型的函數(像安全控制類)提供可選擇的特征。

JavaScript引擎是系統上的一個共享資源。通過將引擎API調用嵌入到應用程序中,可以請求JavaScript引擎進行操作。引擎處理請求,并將結果或狀態信息返回給應用程序。例如,假定使用JavaScript引擎自動化應用程序,腳本應用程序鑒別用戶并設置權限。首先,應用程序創建JavaScript對象,該對象描述用戶信息,包括姓名、ID、權限和可用的函數列表。在這種情況下,應用程序首先調用JS_NewObject創建對象。當JavaScript引擎創建對象后,返回一個指針給應用程序。應用程序再調用JavaScript引擎執行腳本。在創建用戶對象后,應用程序即刻傳遞腳本給JS_EvaluateScript以便編譯和運行。腳本獲許取得并校驗用戶信息,然后建立用戶存取的權利。

JavaScript引擎收到初始化請求后,給JavaScript Run-Time分配內存,應用程序使用的變量、對象和上下文都保存在RunTime中。一個上下文是腳本的執行狀態(JavaScript引擎使用的)。每個同時存在的腳本或線程都必須有自己的上下文。單個的JavaScript RunTime可以包含多個上下文、對象和變量。幾乎所有的JavaScript引擎調用都需要一個上下文變量,應用程序在創建RunTime后,首先應調用至少一次JS_NewContext來創建一個上下文。上下文的實際數量依賴于程序中同時使用的腳本數。程序中每個同時存在的腳本都需要一個上下文。另一方面,如果某個時刻只有一個腳本編譯和運行,則只需一個上下文給每個腳本重復使用即可。

3.3 JavaScript與瀏覽器結合

3.3.1直接加入方式

絕大部分含有JavaScript代碼的網頁都采用直接加入的方式。

<script type="test/javascript">

document.write("This is Javascript!");

</script>

其中,<script> </script>是 JavaScript的標簽。<script type="test/javascript">用來提示瀏覽器該程序采用JavaScript語言編寫,需要調動相應的解釋程序進行解釋。

除此之外,還有一個更高版本的嵌入腳本,使用HTML中的CDATA語法,就是把CDATA中的文本全部當作純文本處理,當遇到CDATA時結束。

<script language="javascript"type="test/javascript">

<!CDATA[[>

<!]]>

</script>

3.3.2引用方式

如果已經存在一個JavaScript源文件(以js為擴展名),則可以采用引用的方式提高程序代碼的利用率。其基本格式如下:

<script src="url"type="test/javascript"></script>

其中url就是程序文件的地址。

同樣地,這樣的JavaScript程序語句可以放在HTML文檔頭部或主體的任何部分。如果要實現直接加入JavaScript程序代碼,可以首先創建一個JavaScript源代碼文件“javascript.js”,其代碼為 document.write("This is Javascript!")。在網頁中調用程序的方法,如:

<script src="javascript.js"type="test/javascript">

</script>

也可以同時在導入文件時指定JavaScript的版本,如:

<script src="javascript.js" type="test/javascript;version=2.0">

</script>

本文對Linux操作系統的嵌入式瀏覽器進行了研究與分析。分析了嵌入式瀏覽器的結構,并對嵌入式瀏覽器的各部分功能進行闡述,其中包括詞法分析、語法分析與布局、瀏覽器JavaScript支持、I/O端等部分。其中,在嵌入式瀏覽器的研究過程中,詞法分析的算法是開發技術的核心。在后續研究工作中,可以對詞法分析算法做進一步的研究,提高詞法分析的效率,完善嵌入式瀏覽器功能實現的效果。

[1]李永,熊光澤,楊玉平.一種嵌入式瀏覽器設計技術[J].微型機及應用,2001,20(12):57-59.

[2]鐘遙,羅克露.基于壓縮XML嵌入式瀏覽器的實現技術[C].中國西部嵌入式系統與單片機技術論壇2005學術年會,成都,2005.

[3]劉崢嶸,張智超,許振山.嵌入式Linux應用開發詳解[M].北京:機械工業出版社,2004:53-166.

猜你喜歡
引擎嵌入式分析
隱蔽失效適航要求符合性驗證分析
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
搭建基于Qt的嵌入式開發平臺
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
電力系統及其自動化發展趨勢分析
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 日韩高清欧美| 一级毛片网| 在线观看av永久| 亚洲视频在线网| 伊人查蕉在线观看国产精品| 亚洲最新网址| www.91中文字幕| 制服丝袜亚洲| 中文字幕久久波多野结衣 | 欧类av怡春院| 亚洲欧洲一区二区三区| 久久精品人人做人人爽电影蜜月| 亚洲国产成人自拍| 婷婷六月激情综合一区| 日本人又色又爽的视频| 欧美中文字幕在线二区| 在线观看视频99| 国产综合欧美| 日韩专区欧美| 六月婷婷精品视频在线观看 | 国产成人一区免费观看| 中日无码在线观看| 午夜视频www| 久久这里只有精品23| 亚洲一区二区黄色| 国产网友愉拍精品视频| 制服丝袜一区| 久久香蕉欧美精品| 国产精品毛片一区视频播| 亚洲精品国产成人7777| 亚洲成a人片| 国产在线第二页| 天堂va亚洲va欧美va国产 | 日本亚洲国产一区二区三区| 无码不卡的中文字幕视频| 久久久久青草大香线综合精品| 亚洲一区二区三区在线视频| 婷婷亚洲视频| 亚洲日韩日本中文在线| 午夜福利免费视频| 久久久久免费精品国产| 国产成人免费观看在线视频| 精品久久国产综合精麻豆| 日韩美毛片| 国产麻豆91网在线看| 91成人在线观看视频| 国产精品永久在线| 97在线碰| 久久久噜噜噜| 亚洲第一综合天堂另类专| 在线国产三级| 亚洲青涩在线| 97精品久久久大香线焦| 久久婷婷人人澡人人爱91| 黄色国产在线| 国产福利小视频在线播放观看| 青青草国产一区二区三区| 午夜限制老子影院888| 成人小视频网| 国产色婷婷| V一区无码内射国产| 欧美激情二区三区| 免费国产高清精品一区在线| 欧美成人一级| www亚洲精品| 亚州AV秘 一区二区三区| 日韩欧美高清视频| 欧美天堂在线| 亚洲第一极品精品无码| 亚洲成人精品| 97久久超碰极品视觉盛宴| AV在线天堂进入| 18禁黄无遮挡网站| 亚洲欧美天堂网| 在线播放精品一区二区啪视频| 亚洲人成网站18禁动漫无码| 亚洲欧美日韩色图| 国产成人精品一区二区秒拍1o| 热99re99首页精品亚洲五月天| 国产精品久久自在自2021| 久草视频一区| 很黄的网站在线观看|