魯鵬禹
遼寧省錦州市渤海大學信息科學與技術學院
嵌入式瀏覽器中JavaScript的設計與實現
魯鵬禹
遼寧省錦州市渤海大學信息科學與技術學院
隨著信息技術的飛速發展,移動終端發展軌跡發生了巨大的改變,從傳統意義上單一模式轉向多樣化進行發展。未來信息領域的發展方向是圍繞著通信以及因特網,這些技術是大勢所趨。現今,國內許多的移動運營商都逐漸實現了移動互聯網,該平臺是一種開放式的服務型平臺,并且主要的發展是圍繞則會圍著數據傳輸向3G時代進行改變。該背景下本文完成了嵌入式瀏覽器中JavaScript的設計與實現。
嵌入式 瀏覽器 JavaScript
隨著WAP2.0規范的逐漸形成,實現因特網和移動網絡之間的相互連通存在很大的的可能性。作為智能手機里面標準配置,嵌入式瀏覽器在Internet不斷發展的前提下取得了很大的進步,并且與移動互聯網相比,在數據資源方面有著很大的優勢,因此目前的嵌入式瀏覽器可以訪問更多的資源并且除了支持wap1.x網頁以外,還可以實現更多的功能。在新版的WAP2.0規范中針對這個問題進行了重大的研究。為了在逐漸增強網頁以及用戶間的交互性、實用性以及動態性等,將大量的JavaScript代碼嵌入到Internet網頁中,這在一定的程度上大大減少了服務器與通信網絡之間的負荷,同時還有很多的網頁中的內容的實現是通過JS代碼形成的。當嵌入式瀏覽器無法支持JavaScript的時候,將會在很大程度上降低瀏覽器訪問的能力。因此現在的很多嵌入式瀏覽器需要嵌入JS從而完成瀏覽器的配置。另外能夠將移動數據服務中所存在的的內容不足這個缺點得到解決。
在大多數人看來,研究瀏覽器不會有很大的發展,但是仍然存在很大的研究意義,Firefox存在很大的研究空間,Opera被Google收購表明了Google很快會走向瀏覽器的道路,然而IE所占有的比例有90%以上,現今的這個局面瀏覽器的研究已經得到了很大的發展。
所謂嵌入式瀏覽器,一般指能解析網頁內容的程序,而又往往是別的程序的一部分,舉個例子來說,QQ登錄之后彈出的每日新聞,迅雷登錄之后彈出的迅雷新聞,都可以歸為這一類。嵌入式瀏覽器,一般指能解析網頁內容程序,而又往往是別的程序一部分。
特點:①具有弱小的CPU能力,功能損耗比較低,而且很多的并非是X86架構,而是ARM核心,有的還是以DSP為主,這些處理器不如PC的處理器的能力,同時也有很多的種類。②可以使用的內存資源有限,大小范圍是從5MB到32MB進行變化。③不需要具備WEB特性,只需要能支持HTML就可以。現在有些網頁會使用JavaScript語言來輔助編輯,使到網頁達到某種效果或者附帶某些小程序,當然這些大部分都是安全的。當進入網頁后顯示不正常,這很可能是由于瀏覽器版本太低了,現在大多數瀏覽器都支持JavaScript腳本的。
JavaScript既是一種描述語言,也是一種基于對象和事件驅動,并且具有安全性能的腳本語言。腳本的基本結構:
是注釋標記,瀏覽器不支持javascript時,標記將被忽略。
在瀏覽器中運行javascript腳本是以標記為起始點,接下來會繼續逐步地繼續執行。將信息顯示出來是通過document.write()實現的。當有document.write()時,執行html文檔,從而可以發現其中的代碼出現了變化。在執行javascript腳本的時候要謹慎。具體的腳本的執行原理如下所示:
①瀏覽器接收用戶的請求,用戶在地址欄輸入網址。②瀏覽器把請求消息發送到服務器。③服務器向瀏覽器發送響應消息,將heml頁面發送給客戶端瀏覽器解析html文檔。如果需要實現進行類型的轉換,例如將整型轉為字符串用toString()函數實現,字符串向浮點型轉變用函數parseFloat()。
當字符中不存在從0到9以及指數的時候,可以把這個字符以及字符之后忽略掉。無法轉換返回NaN,非數字Not a Number。
接著獲取表單中的數據:document.表單名.表單元素名.value。
函數的定義:函數的主要功能是把具有一定功能的代碼執行。當函數可以經過多次調用的時候,可以將代碼的重用率提高很多。
定義函數語法:function函數名(形式參數){ javascript語句;}。
函數的定義放在標簽中間。當調用函數的時候,首先第一步是進函數的定義,接著函數才能夠被調用。例如調用單擊按鈕事件的函數是可以寫成onClick=“count()”;定義函數時聲明了形式參數,調用函數時要傳遞實際參數。多個參數用“,”號隔開。
javascript采用傳值調用。當調用函數的過程中實參需要和形參中的個數以及順序保持一致。
形式參數:當函數定義的過程中,需要注意函數中的參數順序以及個數。
實際參數:調用函數時傳遞給函數的參數值。函數的參數可有一個或多個,或者一個也沒有。事件監聽語法:
IE:
attachEvent(type,callback)
type:事件名 如:onclick、onsubmit、onchange等
callback:事件處理程序
基于W3C模型:
addEventListener(type,callback,capture)
Type:事件名 ,沒有“on”前綴 如:click、submit、change
Callback:事件處理程序
Capture:事件模型 (冒泡模型、捕捉模型) true:捕捉模型
false:冒泡模型 (默認值)
IE和W3C事件監聽的不同:
監聽方法不同:IE attachEvent、W3C addEventListener。
監聽參數不同:IE不具備模型參數。而W3C具備模型參數,其中當該參數是flase的時候,表示冒泡事件。觸發順序定義為:觸發IE8及IE8以下瀏覽器的時候要提前綁定,接著W3C瀏覽器會被觸發。先觸發事件有不一樣的名稱:IE事件需要“on”前綴,W3C不需要“on”前綴。
3.1 事件模型
事件模型(事件的觸發順序)分為兩種:Body嵌套div1,div1嵌套div2,div2嵌套div3。①冒泡模型;②捕捉模型。目前,IE只支持冒泡模型。
3.2 事件冒泡
事件冒泡從字面意思看是事件觸發后元素會下升到頂端。也意味著。冒泡事件是從下面到上面的,觸發DOM目標元素,并且執行該目標元素以后,元素會逐個上升到頂部。
3.3 捕獲階段
當觸發DOM樹節點時就會有相應的事件響應,事件就會在節點觸發之后發射。該事件發出點是Window,通過多次經過下級節點最后再到目標節點。這個目標節點到達之前的整個過程稱為捕獲階段,簡稱是Capture Phase。
在所有的節點都有經過的時候,事件就會被觸發。捕獲階段的主要目的是確定該事件的傳遞路線,從而便于冒泡階段會按照這個路線返回到Window。
該觸發事件的監聽過程是需要將監聽事件函數的參數設置為true。
4.1 JS處理器插件的運行設計
在瀏覽器中分析語法部分中設計JS處理器插件,并且結合部分還有瀏覽器。同時所包括的模塊還有另外的幾個,處理網頁中需要對網頁進行同步處理,并且相互協作,最后和圖形的用戶接口實現交互,當圖形接口的事件觸發后就會調用相應的事件函數,從而完成操作,另外還需要將處理實現的結果發送到圖形用戶的接口中,而且還需要更新瀏覽器的內核數據。
因此需要高度重視JS插件的運行,其對JS插件實現高效運行以及插件設計都有重要的影響關系。模塊初始化流程圖如圖1所示。

圖1 模塊初始化流程圖
4.2 JavaScript處理器插件的系統組成
JS處理器插件的組成部分包括了JS資源管理模塊、JS代碼段解釋執行模塊、同時實現JS瀏覽器對象的事件處理模塊和管理模塊的新建等,其次還附加數學函數庫的支持。體系結構如圖2所示。

圖2 系統總體結構圖
4.3 Javascript處理器插件的事件處理器
Javascript語言的運行要借用事件的驅動實現。網頁和用戶之間的相互交流是通過javascript實現的,從而最終完成網頁動態顯示的效果。在解析網頁的過程中實現了JS客戶端對象的創建以及標簽的解釋和執行等,程序的執行是通過事件進行觸發的,事件函數的處理也是通過事件處理實現的,JS處理器插件中的一個重要的組成部分就是事件的處理。因此,為了保證事件可以正常的運行就需要保證JS處理器插件的實現。JS處理器插件的在很多的移動終端中都有廣泛的應用,mobile pritile的事件模型中都借用到了js處理器插件。
通過訪問大量的網站,特別是訪問電子郵箱。由于通過瀏覽器訪問電子郵箱的時候要解釋執行大量的JS代碼,當電子郵箱訪問成功的時候,能夠說明對JavaScript支持情況是比較全面的。瀏覽器訪問mail.163.com的結果提圖3所示。

圖 3-1 密碼錯誤

圖 3-3 郵件列表
結語:隨著互聯網技術的飛速發展,基于JavaScript技術的網頁開發在網站設計中占據很重要的角色。為了迎合市場的需要,增強瀏覽器的訪問能力,將javascript應用到嵌入式瀏覽器中具有重要的作用。

圖 3-2 進入郵箱
[1]林長征,鄭浩然,熊軍,等.嵌入式瀏覽器中CSS技術的研究與實現[J].計算機工程與應用,2006,42(23):92-94
[2]劉海雄,陽富民,胡貫榮.嵌入式瀏覽器中Cookie技術的實現[J].計算機工程與設計,2003,24(6):39-41
[3]劉志斌,謝長生.MiniGUI在嵌入式瀏覽器中的應用[J].信息安全與通信保密,2004(7):25-27
[4]陳卉.數字電視機頂盒嵌入式瀏覽器中間件設計[J].電視技術,2009,33(s1):84-85