專利名稱:一種無線標記語言腳本的執(zhí)行方法及裝置的制作方法
技術領域:
本發(fā)明涉及計算機及嵌入式領域,特別涉及一種WMLScript腳本的執(zhí)行方法及裝置。
背景技術:
在2G (second generation,第二代移動通訊技術)時代,由于受到制約無線網(wǎng)絡 的帶寬的限制,因此移動設備上主要是wap (Wireless ApplicationProtocol,無線應用協(xié) 議)瀏覽器。隨著第三代移動網(wǎng)絡的普及,制約無線網(wǎng)絡的帶寬問題不復存在,另外隨著移 動終端智能化的發(fā)展,CPU主頻越來越高,及終端屏幕尺寸越來越大,移動終端已經(jīng)有足夠 的能力解析和顯示web (環(huán)球網(wǎng))網(wǎng)頁。在此背景下,移動運營商提出了全功能瀏覽器的要求,即通過一個瀏覽器既能訪 問WWW(World Wide Web,萬維網(wǎng))網(wǎng)頁,也能訪問wap網(wǎng)頁,這就需要瀏覽器內部有不同的 引擎。Android 一詞的本義指“機器人”,同時也是一種基于Linux ( —種操作系統(tǒng))平臺 的開源移動終端操作系統(tǒng)的名稱。該操作系統(tǒng)由操作系統(tǒng)內核、中間件、用戶界面和應用軟 件組成,采用軟件堆層(Software Stack,又名軟件疊層)的架構,主要分為三部分。底層以 Linux內核工作為基礎,由C ( 一種編程語言)語言開發(fā),只提供基本功能;中間層包括函數(shù) 庫(Library)和虛擬機(Virtual Machine),由C++(—種編程語言)語言開發(fā)。最上層是 各種應用軟件,包括通話程序,短信程序等,由各公司自行開發(fā),以Java(—種編程語言)語 言作為編寫程序的一部分語言。WebKit是一個開源的瀏覽器內核,Android操作系統(tǒng)使用它作為內置瀏覽器的 內核,并且將采用該內核的瀏覽器稱為WebKit瀏覽器。WebKit瀏覽器高效穩(wěn)定,兼容性 好,并且源碼結構清晰,易于維護。然而WebKit瀏覽器內部只有javascript ( 一種腳本語 言)引擎,因此僅支持www網(wǎng)頁的訪問,WebKit瀏覽器中沒有WMLscript (Wireless Markup Language script,無線標記語言腳本)引擎,不支持wap網(wǎng)頁中的WMLScript腳本。然而, 要在Android系統(tǒng)中使用其它的全功能瀏覽器,開發(fā)過程比較費時費力,且必須支付一定 的開發(fā)費用。某些瀏覽器的性能也不是很好,運行比較慢,布局不美觀,并且,這些瀏覽器均 不開放源代碼,在瀏覽器出現(xiàn)問題后,也不方便進行調試以解決問題。
發(fā)明內容
本發(fā)明實施例提供一種WMLscript引擎的實現(xiàn)方法及裝置,用于在WebKit瀏覽 器中實現(xiàn)對WMLScript腳本的支持,從而使WebKit瀏覽器支持WMLScript腳本語言,使 WebKit瀏覽器功能更加完善。一種無線標記語言腳本W(wǎng)MLScript腳本的執(zhí)行方法,包括以下步驟當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本;受到點擊鏈接的觸發(fā)時,調用WMLScript引擎;
3
通過WMLScript引擎調用WMLScript腳本,并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。一種無線標記語言WMLScript腳本的執(zhí)行裝置,包括獲取模塊,用于當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳 本;執(zhí)行模塊,用于當受到點擊鏈接的觸發(fā)時,調用WMLScript引擎;通過WMLScript 引擎調用WMLScript腳本,并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。本發(fā)明實施例當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本; 受到點擊鏈接的觸發(fā)時,執(zhí)行WMLScript引擎;通過WMLScript引擎調用WMLScript腳本, 并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。從而在WebKit瀏覽器中加入 了 WMLscript引擎,以使WebKit瀏覽器支持WMLScript腳本,從而支持wap網(wǎng)頁的訪問。
圖1為本發(fā)明實施例中WMLScript腳本的執(zhí)行裝置的主要結構圖;圖2為本發(fā)明實施例中帶有解析模塊的WMLScript腳本的執(zhí)行裝置的主要結構 圖;圖3為本發(fā)明實施例中WMLScript腳本的執(zhí)行裝置的詳細結構圖;圖4為本發(fā)明實施例中WMLScript腳本的執(zhí)行方法的主要流程圖;圖5A為本發(fā)明實施例中WMLScript腳本的執(zhí)行方法的詳細流程圖;圖5B為本發(fā)明實施例中加入判斷過程后WMLScript腳本的執(zhí)行方法的詳細流程 圖。
具體實施例方式本發(fā)明實施例當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本; 受到點擊鏈接的觸發(fā)時,執(zhí)行WMLScript引擎;通過WMLScript引擎調用WMLScript腳本, 并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。從而在WebKit瀏覽器中加入 了 WMLscript引擎,以使WebKit瀏覽器支持WMLScript腳本,從而支持wap網(wǎng)頁的訪問。參見圖1,本發(fā)明實施例中WMLscript引擎的實現(xiàn)裝置包括獲取模塊101及執(zhí)行模 塊102。其中,所述裝置位于WebKit瀏覽器中。獲取模塊101用于獲取WMLScript腳本。獲取模塊101具體用于在解析模塊確定 網(wǎng)頁中go (執(zhí)行)語句為鏈接屬性時,根據(jù)獲取WMLScript腳本的函數(shù)加載WMLScript腳本 及獲取WMLScript腳本的內容。例如,獲取WMLScript腳本的函數(shù)可以是IoadWMLScript。 WebKit瀏覽器中設置一個類,用于根據(jù)獲取WMLScript腳本的函數(shù)獲取WMLScript腳本、獲 取該WMLScript腳本的內容及執(zhí)行該WMLScript腳本,例如,該類為WMLGoElement (wml執(zhí) 行要素),獲取WMLScript腳本的函數(shù)就位于WMLGoElement類中,其中,本發(fā)明實施例中獲 取WMLScript腳本的函數(shù)IoadWMLScript可以如下void IoadWMLScript(String url)其中,IoadWMLScript函數(shù)的具體內容如下void WMLGoElement IoadWMLScript (String url) //IoadWMLScript 函數(shù)定義在WMLGoElement 類中;
{if ( ! isNeedRunWmlScript((char*)url. Iatinl ()· data()))//判斷是否需要運 行WMLScript腳本,以解析url ;return ;Document^doc = document () -J/將當前網(wǎng)頁的數(shù)據(jù)賦給變量;if( ! doc)return ;DocLoader^docLoader = doc- > docLoader () ;// 獲取當前網(wǎng)頁的下載類,以方 便下載WMLScript腳本文件;if( ! docLoader)return ;if (NULL = = m_pCacheWMLScript)//判斷 m_pCacheWMLScript 變量是否為空。這 是出于安全考慮的步驟,以防nupCacheWMLScript變量不為空時影響執(zhí)行過程。也可以不 執(zhí)行本步驟,直接執(zhí)行下一步;m_pCacheWMLScript = docLoader- > requestScript (url, ‘‘ IS0-8859-1 “); //將WMLScript腳本的內容賦給m_pCacheWMLScript變量,相當于獲得了 WMLScript腳本 的內容;if(m_pCacheWMLScript){m_pCacheWMLScript- > addClient (this) ;// 為下載功能增加一個客戶端,在下 載完成后通知該客戶端。其中,一個WMLScript腳本只需下載一次。return ;}}其中,WMLScript腳本的 url 指的是指向 WMLScript 腳本的 url,IoadWMLScript 函數(shù)用于獲取WMLScript腳本的內容。WMLGoElement中還可以有一個變量,用于保存所述WMLScript腳本的內 容,例如,本發(fā)明實施例中該變量可以為CachedResourceHandle<CachedScript>m_ pCacheWMLScript。參見圖2,所述裝置還包括解析模塊103。解析模塊103用于解析wap網(wǎng)頁。解析模塊103具體用于解析wap網(wǎng)頁中調用 的url,調用的函數(shù)名稱、調用的函數(shù)參數(shù)等。解析模塊103在解析wap網(wǎng)頁時,解析到go 語句的時候,會首先根據(jù)WMLGoElement類創(chuàng)建對象,在創(chuàng)建完后會調用相應函數(shù)來解析go 語句的屬性,例如,本發(fā)明實施例中該函數(shù)可以是WMLGoElement :parseMappedAttribute ( 解析映射屬性)函數(shù),該函數(shù)位于WMLGoElement類中,即判斷go語句是否為鏈接屬性,也 就是判斷需執(zhí)行的任務是否為鏈接屬性,如果解析模塊103解析出的go語句的屬性為鏈接 屬性,則調用獲取模塊101中的IoadWMLScript函數(shù),以獲取WMLScript腳本,并可以將該 WMLScript HP*白勺內胃#入 CachedResourceHandle<CachedScript>m_pCacheWMLScript ^ 量中。定義全局變量;
定義url鏈接為字符串格式;執(zhí)行模塊102用于執(zhí)行WMLScript腳本的內容。當執(zhí)行模塊102受到點擊 鏈接的觸發(fā)時,會調用相應執(zhí)行函數(shù)來執(zhí)行WMLScript引擎例如,該執(zhí)行函數(shù)可以是 WMLGoElement executetask 函數(shù),該函數(shù)定義在 WMLGoElement 類中,用于執(zhí)行 WMLScript引擎。在本發(fā)明實施例中,需對相應執(zhí)行函數(shù)進行擴展后該執(zhí)行函數(shù)才能完成執(zhí)行 WMLScript引擎的任務。例如,對該executetask(執(zhí)行任務)函數(shù)進行如下擴展if (isNeedRunWmlScript( (char*) href. Iatinl ()· data ())&&NULL ! = m_ pCacheWMLScript)//判斷此鏈接是否為有效的WMLScript腳本鏈接;{extern Document氺gdoc ;gdoc = doc ;String str = url. string ();String strScriptFun ;int pos = 0 ;pos = str. reverseFindC /'pos++ ;strScriptFun = str. substring (pos, str. length () -pos) ;// 獲取 WMLScript 鏈 接中的函數(shù)名稱;strScriptFun. r印Iace (〃 % 20 “, 〃 〃);strScriptFun = strScriptFun. stripWhiteSpace();calIWMLScriptFunc (strScriptFun. Iatinl (). data (), WMLscript 引擎;m_pCacheWMLScript- > script (). Iatinl (). data (), 以參數(shù)的方式傳遞給引擎執(zhí)行;m_pCacheWMLScript- > script (). length ());gdoc = NULL ;
獲取腳本文件名;
替換多余空格; 替換多余空格; //開始執(zhí)行
獲取腳本的內容,
傳入腳本長度m_pCacheWMLScript-> destroyDecodedData() ;//釋放據(jù)口本內容,以 免該內容繼續(xù)占用內存,造成內存泄露;return ;}在WebKit瀏覽器中引入了 WMLscript引擎,從而使WebKit瀏覽器支持。其中, calIWMLScriptFunc是實現(xiàn)WMLscript引擎的入口函數(shù),用于調用WMLScript腳本、獲得 WMLScript腳本內容及執(zhí)行WMLScript腳本內容。所有執(zhí)行WMLScript腳本的過程都是從 此函數(shù)開始。calIWMLScriptFunc函數(shù)的具體內容如下int calIWMLScriptFunc (const char氺uri, const char氺pScript, int scrit— Ien)// 定義 calIWMLScriptFunc 函數(shù)的三個參數(shù),包括 uri、WMLScript 腳本及 WMLScript
腳本的長度;{
WMLScriptSlot result = {0}
unsigned short numApps = 0 ;int byteCodeLen = 0 ;int freeFlag = 0 ; //初始化,先將參數(shù)的值均置零;if( (NULL = = pScript) | | (scrit_len 彡=0)) {// 判斷腳本長度是否為 0 ;return 0 ;}if( ! isValidByteCode(pScript, scrit_len)){if(WMLS_0K ! = compilerffmlScript((char*)pScript, scrit_ len, &gpWmlScriptCode,&byteCodeLen)) // 判斷腳本的內容是否為有效的 WMLScript 的二進制格式,否則有可能是文本方式的腳本,需要先把文本方式的腳本編譯為二進制的 腳本;return 0 ;if ((NULL = = gpffmlScriptCode) | | (byteCodeLen < = 0))return 0 ;freeFlag = 1 ;}else{gpffmlScriptCode = (char*)malIoc(scrit_len+l);memset(gpffmlScriptCode,0, scrit_len+l);memcpy (gpffmlScriptCode, pScript, scrit_len) ;// WMLScript HP HiSi WMLScript腳本的內容傳遞到執(zhí)行變量中,以執(zhí)行WMLScript腳本的內容;}//execute scriptWMLScriptExecute (gScriptRef, uri, &result) ;// Jfiu^Mf WMLScriptVX 下均為執(zhí)行過程;if((freeFlag)&&(NULL ! = gpffmlScriptCode)) {ws_free_byte_code((unsigned char*)gpffmlScriptCode);gpffmlScriptCode = NULL ;freeFlag = 0 ;}else{if(NULL ! = gpffmlScriptCode){free (gpffmlScriptCode);gpffmlScriptCode = NULL ;}
}return 1 ;}int WMLScriptExecute (WMLScriptLibGlobals*gP, const char*uri, WMLScriptSlot*rs){
short findex = 0 ;unsigned char argc = 0 ;char氺str = *ptr = NULL ;WMLScriptModule^m ;WMLScriptSlot氺stack ;WMLScriptFunction氺fp ;str = strchr((char*)uri, ‘ #');if (str == NULL) return WMLScriptErrInval idURI ;m = WMLScriptLoadModule (gP, uri, str-uri,&err);if (m == NULL)return-1 ;ptr = strchr(++str,'(');if (ptr == NULL)return WMLScriptErrInvalidURI ;findex = WMLScriptFindFunc (m, str, ptr-str);if (findex < 0)return WMLScriptErrFunctionNotFound ;當在獲取模塊101中加入獲取WMLScript腳本的函數(shù),并對執(zhí)行模塊102中相 應執(zhí)行函數(shù)作出擴展后,就在WebKit瀏覽器中實現(xiàn)了 WMLscript引擎。當將WMLscript 引擎移植入WebKit瀏覽器后,可由解析模塊103解析wap網(wǎng)頁中調用的url、調用的函數(shù) 名稱、調用的函數(shù)參數(shù)等,解析模塊103若解析到go (語句)為鏈接屬性,則獲取模塊101 加載WMLScript腳本及WMLScript腳本的內容,執(zhí)行模塊102調用WMLscript引擎,通過 WMLscript引擎調用WMLScript腳本,獲得并執(zhí)行WMLScript腳本的內容。具體的,解析模塊 103 解析網(wǎng)頁中調用的 url,例如,該 url 可以為 getCapital.wmls#getCapital (‘capital,, $(C0Untry_name)’),是一個用于根據(jù)國家名稱獲取該國家首都名稱的函數(shù)。解析模 塊103解析調用的函數(shù)名稱getcapital (獲知首都),解析調用的函數(shù)的參數(shù),參數(shù) 1 'capital’(首都),參數(shù) 2 ,country_name,(國家名)。獲取模塊 101 加載該 WMLScript 腳本及該WMLScript腳本的內容,執(zhí)行模塊102調用WMLscript引擎,WMLscript引擎通過 函數(shù)名稱getcapital獲取到函數(shù)代碼開始處的地址,將此地址設置為程序執(zhí)行的入口點。 把函數(shù)調用的參數(shù)(參數(shù)1 ,capital’,參數(shù)2 ,country_name')傳入給函數(shù)使用,較 佳的,可以通過壓棧的方式傳入給函數(shù)使用,其中,壓棧的特征是先入后出,后入先出。然后 開始根據(jù)調用的函數(shù)取指令,根據(jù)不同的0pc0de(操作碼)值,跳轉到相應位置執(zhí)行流程。 依次解析執(zhí)行指令,每解析完一個指令即修改IP (指針),使其指向下一個地址,一直到函 數(shù)的結束。其中,如果指令中有call (調用)指令,則還需調用庫函數(shù)。庫函數(shù)主要分為兩 大類標準庫函數(shù)和瀏覽器相關的庫函數(shù)。標準庫函數(shù)主要涉及到浮點數(shù)(Float)及字符 串(String)等的相關功能,瀏覽器相關的函數(shù)主要涉及到網(wǎng)頁中變量的獲取及賦值、url 的解析等等,例如WTAPublic函數(shù)主要涉及到打電話等相關功能。這些庫函數(shù)的功能都是 wmlscript預先規(guī)范定義好的,但具體的實現(xiàn)過程卻與平臺及使用的瀏覽器相關。參見圖3,所述裝置還包括編譯模塊104。WMLScript腳本的內容的形式一般分為文本文件或編譯好的二進制字節(jié)碼文件。對于文本文件形式的WMLScript腳本的內容,目前瀏覽器無法執(zhí)行,因此必須將其轉換為 二進制字節(jié)碼文件方可執(zhí)行。執(zhí)行模塊102還用于判斷獲取的WMLScript腳本的內容是否是二進制字節(jié)碼文 件。如果判斷結果為否,所獲取的WMLScript腳本的內容不是二進制字節(jié)碼文件而是文本 文件,則需編譯模塊104先將其編譯為二進制字節(jié)碼文件,再由執(zhí)行模塊102執(zhí)行;如果判 斷結果為是,所獲取的WMLScript腳本的內容是二進制字節(jié)碼文件,則由執(zhí)行模塊102直接 執(zhí)行。編譯模塊104用于將文本文件形式的WMLScript腳本的內容編譯為二進制字節(jié)碼 文件。執(zhí)行模塊102開始執(zhí)行WMLScript腳本的內容時,獲取模塊101需首先WMLScript 腳本的內容,根據(jù)使用不同的apn(Access Point Name,接入點名稱),WMLScript腳本的內 容分為文本文件或編譯好的二進制字節(jié)碼文件,編譯模塊104當加載的WMLScript腳本的 內容文件為文本文件時,將其編譯為二進制字節(jié)碼文件,再由執(zhí)行模塊102調用WMLscript 引擎來執(zhí)行。這樣可以使WebKit瀏覽器功能更加優(yōu)化,無論使用何種網(wǎng)關,WebKit瀏覽器 都能夠支持WMLScript腳本。下面通過實現(xiàn)流程來介紹WMLscript引擎的實現(xiàn)方法。參見圖4,本發(fā)明實施例介紹WMLscript引擎的主要實現(xiàn)方法。方法流程如下步驟401 當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本。其 中,WMLScript腳本的url指的是指向WMLScript腳本的url步驟402 受到點擊鏈接的觸發(fā)時,執(zhí)行WMLScript引擎。步驟403 通過wmlscript引擎調用WMLScript腳本,并獲得WMLScript腳本的內容。步驟404 執(zhí)行WMLScript腳本的內容。參見圖5A,本發(fā)明實施例介紹WMLscript引擎的詳細實現(xiàn)方法。方法流程如下首先需在WebKit瀏覽器中加入獲取WMLScript腳本的函數(shù)。其中,該獲取 WMLScript腳本的函數(shù)可以定義在WMLGoElement類中,函數(shù)名可以是IoadWMLScript。還 可以同時定義一個用于保存WMLScript腳本的內容的變量,例如該變量為CachedResource Handle<CachedScript>m_pCacheWMLScript。還需擴展WebKit瀏覽器中相關執(zhí)行函數(shù)的內容。例如,在本發(fā)明實施例中,該 函數(shù)可以是WMLGoElement: :executetask,該函數(shù)定義在WMLGoElement類中,用于執(zhí)行 WMLscript引擎,通過獲得WMLscript引擎的入口函數(shù),實現(xiàn)WMLscript引擎。步驟501 解析wap網(wǎng)頁。步驟502 判斷go語句是否為鏈接屬性。當判斷結果為是時,繼續(xù)步驟503,否則 結束流程。步驟503 調用獲取WMLScript腳本的函數(shù),加載WMLScript腳本及該WMLScript 腳本的內容。其中,可以用IoadWMLScript函數(shù)獲取WMLScript腳本。步驟504:將加載的WMLScript腳本的內容存入變量中。其中,該變量可以是Cac hedResourceHandle<CachedScript>m_pCacheWMLScript。解析模塊103在解析wap網(wǎng)頁時,解析到go (執(zhí)行)語句的時候,會先根據(jù) WMLGoElement 類創(chuàng)建對象,在創(chuàng)建完畢后調用 WMLGoElement: :parseMappedAttribute 函
9數(shù)來解析go語句的屬性,如果解析模塊103解析出的go語句的屬性為鏈接屬性,則會調用 獲取模塊103中的IoadWMLScript函數(shù),以加載WMLScript腳本及該WMLScript腳本的內 ,以亥內·#入 CachedResourceHandle<CachedScript>m_pCacheWMLScript ^M 中。步驟505 受到點擊鏈接事件的觸發(fā)。步驟506 調用 WMLGoElement: :executetask 函數(shù)以執(zhí)行 WMLScript 引擎。步驟507 通過WMLScript引擎調用WMLScript腳本并執(zhí)行WMLScript腳本的內容。參見圖5B,本發(fā)明實施例中加入了判斷過程,以判斷WMLScript腳本是文本文件 還是二進制字節(jié)碼文件。詳細方法流程如下步驟511 解析wap網(wǎng)頁。WebKit瀏覽器受到點擊鏈接事件的觸發(fā)。步驟512:判斷go語句是否為鏈接屬性。當判斷結果為是時,繼續(xù)步驟513,否則 結束流程。步驟513 調用獲取WMLScript腳本的函數(shù),加載WMLScript腳本及該WMLScript 腳本的內容。其中,可以用IoadWMLScript函數(shù)獲取WMLScript腳本。步驟514:將加載的WMLScript腳本的內容存入變量中。其中,該變量可以是Cac hedResourceHandle<CachedScript>m_pCacheWMLScript。步驟515 受到點擊鏈接事件的觸發(fā)。步驟516 判斷獲取的WMLScript腳本的內容是否為二進制字節(jié)碼文件。當判斷 結果為否,繼續(xù)步驟517,否則繼續(xù)步驟518。步驟517 將獲取的文本文件形式的WMLScript腳本的內容編譯為二進制字節(jié)碼 文件形式。步驟518 調用 WMLGoElement: :executetask 函數(shù)以執(zhí)行 WMLScript 引擎。步驟519 通過WMLscript引擎調用WMLScript腳本并執(zhí)行WMLScript腳本的內容。本發(fā)明實施例當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本; 受到點擊鏈接的觸發(fā)時,執(zhí)行WMLScript引擎;通過WMLScript引擎調用WMLScript腳本, 并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。從而在WebKit瀏覽器中加 入了 WMLscript引擎,以使WebKit瀏覽器支持WMLScript腳本,從而支持wap網(wǎng)頁的訪問。 本發(fā)明實施例還在 WMLGoElement 類中增加了 CachedResourceHandle<CachedScript>m_ pCacheWMLScript變量,用于保存加載的WMLScript腳本的內容。只需在WebKit瀏覽器中 加入相關函數(shù)即可實現(xiàn)將WMLscript引擎植入WebKit瀏覽器中,實現(xiàn)過程簡單,便于操作。 并且本發(fā)明實施例還加入了編譯模塊104,用于將文本文件形式的WMLScript腳本的內容 編譯為WebKit瀏覽器可執(zhí)行的二進制字節(jié)碼文件,以避免當apn不同時,因WMLScript腳 本的內容為文本文件形式而導致該腳本無法執(zhí)行,使WebKit瀏覽器的功能更加優(yōu)化,保證 無論在使用何種網(wǎng)關的情況下WebKit瀏覽器都能夠支持WMLScript腳本。本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序 產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機 可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形 式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程 圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算 機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理 器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生 用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能 的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計 算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或 其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖 一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍 之內,則本發(fā)明也意圖包含這些改動和變型在內。
權利要求
一種無線標記語言腳本W(wǎng)MLScript腳本的執(zhí)行方法,其特征在于,包括以下步驟當無線應用協(xié)議wap網(wǎng)頁中包含WMLScript腳本的統(tǒng)一資源定位url時,加載WMLScript腳本;受到點擊鏈接的觸發(fā)時,調用WMLScript引擎;通過WMLScript引擎調用WMLScript腳本,并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。
2.如權利要求1所述的方法,其特征在于,在當wap網(wǎng)頁中包含WMLScript腳本的url 時,加載WMLScript腳本之前還包括步驟判斷需執(zhí)行的任務是否為鏈接屬性;當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本的步驟包括當判斷 結果為是時,獲取當前網(wǎng)頁中的數(shù)據(jù)及當前網(wǎng)頁中的下載類,以加載WMLScript腳本。
3.如權利要求1所述的方法,其特征在于,執(zhí)行wmlscript引擎的步驟包括獲取 WMLScript腳本文件名、WMLScript腳本的url中的函數(shù)名稱和WMLScript腳本長度。
4.如權利要求3所述的方法,其特征在于,調用WMLScript腳本,并獲得WMLScript腳 本的內容的步驟包括根據(jù)所述WMLScript腳本文件名、WMLScript腳本的url中的函數(shù)名 稱和WMLScript腳本長度,獲取WMLScript腳本的內容。
5.如權利要求1所述的方法,其特征在于,在執(zhí)行WMLScript腳本的內容之前還包括步 驟判斷所述獲取的WMLScript腳本的內容是否為二進制字節(jié)碼文件,當判斷結果為否時, 將所述獲取的WMLScript腳本的內容編譯為二進制字節(jié)碼文件。
6.一種無線標記語言WMLScript腳本的執(zhí)行裝置,其特征在于,包括獲取模塊,用于當wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本;執(zhí)行模塊,用于當受到點擊鏈接的觸發(fā)時,調用WMLScript引擎;通過WMLScript引擎 調用WMLScript腳本,并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。
7.如權利要求6所述的裝置,其特征在于,還包括解析模塊,用于判斷需執(zhí)行的任務 是否為鏈接屬性;當判斷結果為是時,所述獲取模塊獲取當前網(wǎng)頁中的數(shù)據(jù)及當前網(wǎng)頁中的下載類,以 加載WMLScript腳本。
8.如權利要求6所述的裝置,其特征在于,所述執(zhí)行模塊用于獲取WMLScript腳本文件 名、WMLScript腳本的url中的函數(shù)名稱和WMLScript腳本長度。
9.如權利要求8所述的裝置,其特征在于,所述執(zhí)行模塊用于根據(jù)所述WMLScript腳本 文件名、WMLScript腳本的url中的函數(shù)名稱和WMLScript腳本長度,獲取WMLScript腳本 的內容。
10.如權利要求6所述的裝置,其特征在于,所述執(zhí)行模塊還用于判斷所述獲取的 WMLScript腳本的內容是否為二進制字節(jié)碼文件;當判斷結果為否時,還包括編譯模塊,用于將所述獲取的WMLScript腳本的內容編譯 為二進制字節(jié)碼文件。
全文摘要
本發(fā)明公開了一種WMLScript腳本的執(zhí)行方法,用于在WebKit瀏覽器中實現(xiàn)對WMLScript腳本的支持,從而使WebKit瀏覽器支持WMLScript腳本語言,使WebKit瀏覽器功能更加完善。所述方法包括當無線應用協(xié)議wap網(wǎng)頁中包含WMLScript腳本的url時,加載WMLScript腳本;受到點擊鏈接的觸發(fā)時,調用WMLScript引擎;通過WMLScript引擎調用WMLScript腳本,并獲得WMLScript腳本的內容;執(zhí)行WMLScript腳本的內容。本發(fā)明還公開了用于實現(xiàn)所述方法的裝置。
文檔編號G06F17/30GK101944120SQ20101028894
公開日2011年1月12日 申請日期2010年9月19日 優(yōu)先權日2010年9月19日
發(fā)明者王勇 申請人:青島海信移動通信技術股份有限公司