新四季網

Widget引擎中使用第三方引擎解析腳本文件的方法和裝置的製作方法

2023-05-28 16:02:11

專利名稱:Widget引擎中使用第三方引擎解析腳本文件的方法和裝置的製作方法
技術領域:
本發明涉及計算機技術領域,更具體地,涉及一種Widget引擎中使用第三方引擎解析腳本文件的方法和裝置。
背景技術:
Widget是目前廣泛使用的一種應用程式,該程序可應用在PC、電視機、手機等多種電子產品中。通過Widget引擎,可解析各種Widget程序,將各種數據和功能通過Widget 展示給用戶,如萬年曆、時鐘、播放歌曲等等。對電視機而言,由於電視機網絡化的發展,用戶在觀看電視節目的同時,也可通過Widget瀏覽網頁,查看股票信息,查詢天氣狀況等。在電視機內嵌入的Widget引擎,也 稱為TVWidget引擎,加入執行一些和電視機相關的功能,如切換頻道、錄製電視節目等。 TVWidget引擎是運行在電視上,不但可以執行電視機上的Widget程序,還可以從網絡上下 載各種Widget程序到電視裡,然後解析Widget程序,把Widget程序實現的各種功能呈現 給用戶,這些Widget程序的功能有新聞、天氣預報、股票信息、在線播放等等。這些Widget 程序有一個共同的特點,就是它們的行為控制和功能控制都是用JavaScript腳本完成。因 此,TVffidget引擎必須能解析JavaScript腳本,才能把各個Widget程序所實現的功能呈 現給用戶。但由於JavaScript腳本語言內容豐富,控制複雜,目前TVWidget引擎要自己實 現一套JavaScript解析引擎困難度非常大,可以說JavaScript解析是TVWidget引擎的一 個瓶頸。而引入第三方成熟的JavaScript解析引擎則能降低開發難度,突破瓶頸問題,完 全實現TVWidget引擎的功能。

發明內容
本發明旨在提供一種Widget引擎中使用第三方引擎解析腳本文件的方法和裝置,其能夠解決Widget引擎對JavaScript腳本的解析的瓶頸問題。根據本發明的一個方面,提供一種在Widget引擎中使用第三方引擎解析腳本文件的方法,包括將第三方引擎的原始碼編譯成相應的庫文件;調用第三方引擎的庫 文件的函數創建JavaScript腳本文件的編譯環境;Widget引擎獲得Widget程序中的 JavaScript腳本文件;使用第三方引擎的庫文件的函數解析JavaScript腳本文件。進一步地,調用第三方引擎的庫文件的函數中創建JavaScript腳本文件的編譯環境的過程包括以下步驟創建JavaScript腳本文件運行時環境;在創建的運行時環境中創建腳本運行上下文;配置已經創建的腳本運行上下文;在腳本運行上下文中,創建並初始化第三方引擎 內置的類。進一步地,第三方引擎為蜘蛛猴SpiderMonkey引擎。進一步地,創建JavaScript腳本文件的編譯環境之後,方法還包括在SpiderMonkey引擎中,按照用戶的功能需求定義類和/或函數。進一步地,解析JavaScript腳本文件之後,方法還包括運行解析後的 JavaScript腳本文件。進一步地,在運行解析後的JavaScript腳本文件過程中,還包括JavaScript腳本文件使用按照用戶的功能需求定義的類和/或函數、或用來調用SpiderMonkey內置的類。進一步地,運行解析後的JavaScript腳本文件的過程包括在緩衝區中存儲解析後的JavaScript腳本文件,將存儲的地址和緩衝區長度作 為運行函數的參數,執行運行函數;或,使用運行函數調用解析後的JavaScript腳本文件, 在執行運行函數之後返回再次調用的指針變量。進一步地,Widget引擎為電視機中的TVWidget引擎、手機中的Widget引擎、或計 算機中的Widget引擎。根據本發明的另一個方面,還提供一種在Widget引擎中使用第三方引擎解析腳 本文件的裝置,包括編譯單元,用於將第三方引擎的原始碼編譯成相應的庫文件;設置單 元,用於通過第三方引擎的庫文件的函數創建JavaScript腳本文件的編譯環境;獲取單 元,用於通過Widget引擎獲得Widget程序中的JavaScript腳本文件;執行單元,用於使用 第三方引擎的庫文件的函數解析JavaScript腳本文件。進一步地,還包括運行單元,用於運行執行單元解析後的JavaScript腳本文件。本發明通過在widget引擎中加入了第三方引擎,可解析符合JavaScript語法的 JavaScript腳本,實現了 widget引擎解析JavaScript腳本的功能,促進了 widget引擎的 開發。


附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實 施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中圖1示出了本發明實施例的在電視機中應用TVWidget引擎的內部結構示意圖;圖2示出了本發明實施例的在TVWidget引擎中加入第三方引擎的流程圖;圖3示出了本發明實施例的創建JavaScript腳本編譯環境的流程圖;圖4示出了本發明實施例的裝置結構示意圖。
具體實施例方式為清楚說明本發明的方法和裝置,下面給出優選的實施例並結合附圖詳細說明。 目前的Widget程序在解析JavaScript腳本方面存在瓶頸問題,而有的公司已經為解析 JavaScript腳本單獨開發了採用C語言編寫的解析引擎,如Mozilla公司開發完成的開源 軟體蜘蛛猴(SpiderMonkey),能完全解析現在所有的JavaScript語言,具有非常好的通用 性。因此,可以考慮在Widget引擎中引進第三方引擎SpiderMonkey作為JavaScript的解 析引擎。本發明可在TVWidget引擎、PC的Widget引擎、或手機的Widget引擎等各種電子 設備上的引擎中加入spidermonkey引擎,以實現對各種JavaScript腳本的解析。在各種 電子設備的Widget引擎中加入spidermonkey引擎過程均相同,下面以電視機為例,進行說明。參見圖1所示的在電視機中應用TVWidget引擎的內部結構示意圖,電視機內的解 碼晶片安裝有TVWidget引擎,該TVWidget引擎加入了 SpiderMonkey引擎,解析存儲器或 網絡模塊所下載的widget程序,並將解析出功能展示給用戶使用。本發明的方法在TVWidget引擎中加入第三方引擎的過程可參見圖1和圖2,包括 以下步驟S21 使用計算機通過編譯器將第三方引擎編譯成庫文件。第三方引擎加入到TVWidget引擎中,需要先將第三方引擎的原始碼進行編譯,編 譯成相應的庫文件以便於解碼晶片識別,由於解碼晶片不同,編譯器也不相同,需要使用應 用第三方引擎晶片的編譯器進行編譯,並將編譯後的庫文件嵌入到解碼晶片中。S22 解碼晶片內的Widget引擎控制第三方引擎建立JavaScript腳本編譯環境。只有建立的JavaScript腳本編譯環境,JavaScript腳本文件才可以運行,這樣才 能執行後續的解析過程。在建立JavaScript腳本編譯環境的過程中,參見圖3所示的流程 圖,包括以下幾個步驟S31通過第三方引擎創建一個腳本運行時環境。S32通過第三方引擎在創建的運行時環境中再創建腳本運行上下文。S33通過第三方引擎配置已經創建的腳本運行上下文。S34通過第三方引擎在創建的腳本運行上下文中創建一個對象。S35:最後將第三方引擎中內置的類賦予新創建的一個對象中,以便於 JavaScript 腳本使用ο在本實施例中,如果第三方引擎採用SpiderMonkey引擎,則上述在步驟S31中使用SpiderMonkey引擎的JS_NewRuntime函數來創建腳本運行時環境。在步驟S32中需要用到SpiderMonkey引擎的JS_NewContext函數創建腳本運行 上下文。在步驟S33 中使用 SpiderMonkey 引擎的 JS_SetOptions、JS_SetVersion、JS_ SetErrorReporter等函數來配置相關的參數選項。在步驟S34中先要用SpiderMonkey引擎的JS_NewObject來創建一個對象。在步驟S35中用JS_InitStandardClasses函數使該新創建的對象具有 SpiderMonkey引擎內置的各種標準類的功能。在用JS_NewObjeCt函數創建對象時,該對象 的 flags 必須設為 JSCLASS_GLOBAL_FLAGS。通過上面的這些設置,在Widget引擎中創建了 JavaScript腳本環境,創建了具有 第三方引擎內置標準類的功能的對象,JavaScript腳本即可使用第三方引擎內置的標準的類。S23 解碼晶片內的Widget引擎解析出Widget中的JavaScript腳本文件Widget引擎從Widget各種文件中解析出JavaScript腳本文件,以供第三方解析 引擎解析。S24 解碼晶片內的Widget引擎通過第三方引擎解析運行JavaScript腳本文件。解析運行JavaScript腳本文件,將widget程序中的功能展示給用戶,執行如播放 音樂、查看天氣等操作。運行JavaScript腳本文件過程主要包括以下兩種方式
第一種方式解碼晶片把JavaScript腳本當作一個字符緩衝區來運行。即把腳本文件所有 內容讀到一個緩衝區中,然後調用JS_EvalUateScript函數,並把緩衝的地址和長度分 別作為其第三、第四個參數傳遞過去,即可完成JavaScript腳本的運行。此外還有JS_ EvaluateUCScript函數,該函數也完成相同的功能,可用來編譯Unicode字符串。採用這種 方式只運行一次解析出的JavaScript腳本文件。第二種方式解碼晶片先把JavaScript腳本文件編譯後運行。即先調用函數JS_CompileFile, 把要編譯的JavaScript腳本的文件名傳給該函數,作為其第三個參數。該函數調用 成功後,會返回一個JSScript指針類型的變量,然後再把該返回結果傳給函數JS_ ExecuteScript,作為其第三個參數。這樣也完成了 JavaScript腳本的運行。由於返回了 JSScript指針類型的變量,可通過調用該變量,多次運行解析出的JavaScript腳本。上面說明了在TVWidget引擎中加入第三方引擎解析JavaScript腳本文件的 過程,如果採用spidermonkey引擎進行解析,在步驟S34中創建了對象,該對象具有 spidermonkey引擎內置的標準類的功能,如Date、Math等類的功能。用戶還可按照使用的 需求,在步驟S22之後,在spidermonkey引擎中聲明自定義的類或函數,在JavaScript腳 本中使用用戶自定義的類或函數。在C語言中通過SpiderMonkey引擎聲明類的方式如下1、聲明一個屬性數組,該數組中每個元素對應所要創建的新類的每個屬性。2、聲明一個方法數組,該數組中每個元素對應所要創建的新類的每個方法。3、定義一個獲取屬性值的函數,該函數用來獲取所要創建新類的各個屬性的值。4、定義一個設置屬性值的函數,該函數用來設置所要創建新類的各個屬性的值。5、定義一個變量,該變量類型為JSClass,同時使該變量的getProperty等於第3 步定義的函數,使該變量的setProperty值為第4步中定義的函數。6、用SpiderMonkey引擎的JS_InitClaSS函數初始化該變量。調用該函數時用第 5步中定義的變量的地址做為其第四個參數,第1步中聲明的屬性數組做為其第七個參數, 第2步中聲明的方法數組做為其第8個參數,從而完成一個新類的創建。通過以上方面在C語言環境中就創建了一個用戶自定義的類,在JavaScript腳本 中就能使用該新的類,獲取該新類的屬性,使用該新類的方法。有時JavaScript腳本中需要調用C語言中的一些函數來完成一些功能,通過 SpiderMonkey引擎在JavaScript中調用C語言的函數的方式如下1、在C語言環境中定義一個函數,其原型為JSBool (*) (JSContext*cx, JSObject^obj, uintN argc, jsval^argv, jsval^rval);2、調用JS_Def ineFunction函數,使其第三個參數為將來要在JavaScript腳本中 使用的函數名稱,使其第四個參數為第1步中定義的函數。通過以上兩步即可以把C語言中的一個函數聲明到JavaScript腳本中,使用戶可 以在JavaScript腳本中調用。如果要一次聲明多個函數,可以用以下方式1、使用JSFimctionSpec定義一個數組,數組中每個元素的第一個值為將來要在JavaScript中調用的函數名,第二個值為在C語言裡聲明的函數。2、調用JS_DefineFunCti0nS函數,用第1步中聲明的數組作為其第三個參數。 通過以上兩步可以一次性聲明許多函數到JavaScript腳本中使用。用戶可以在 JavaScript腳本中調用所聲明的函數。通過以上聲明的類和函數,用戶可以在JavaScript腳本中使用這些類和函數,以 解析並支持更多的功能。widget引擎解析widget程序中,通過SpiderMonkey引擎即可解 析widget程序中JavaScript腳本所使用自定義的類或函數。上面詳細說明了本發明的方法過程,本發明通過在widget引擎中加入了第三方 引擎,可完成對JavaScript腳本的解析,突破了 Widget引擎中的瓶頸問題,促進了 widget 引擎的開發。第三方引擎可採用SpiderMonkey引擎,也可採用其它類似的解析JavaScript 腳本的引擎。上面詳細說明了本發明的方法,對於本發明的方法,可以以多種裝置結構的形式 實現,下面給出一種優選地裝置實施例說明,參見圖4示出的裝置結構示意圖,包括編譯單元41,用於將所述第三方引擎的原始碼編譯成相應的庫文件;設置單元42,用於在所述第三方引擎中創建JavaScript腳本文件的編譯環境;
獲取單元43,用於通過所述Widget引擎獲得Widget程序中的JavaScript腳本文 件;執行單元44,用於使用所述第三方引擎的庫文件的函數解析並運行所述 JavaScript腳本文件。本發明的上述方法流程均可在本發明的裝置中實現,在此不一一贅述。顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用 的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成 的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而可以將它們存儲在 存儲裝置中由計算裝置來執行,或者將它們分別製作成各個集成電路模塊,或者將它們中 的多個模塊或步驟製作成單個集成電路模塊來實現。這樣,本發明不限制於任何特定的硬 件和軟體結合。以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技 術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修 改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
在Widget引擎中使用第三方引擎解析腳本文件的方法,其特徵在於,包括將所述第三方引擎的原始碼編譯成相應的庫文件;調用所述第三方引擎的庫文件的函數創建JavaScript腳本文件的編譯環境;所述Widget引擎獲得Widget程序中的JavaScript腳本文件;使用所述第三方引擎的庫文件的函數解析所述JavaScript腳本文件。
2.根據權利要求1所述的方法,其特徵在於,調用所述第三方引擎的庫文件的函數創 建JavaScript腳本文件的編譯環境的過程包括以下步驟創建JavaScript腳本文件運行時環境; 在創建的所述運行時環境中創建腳本運行上下文; 配置已經創建的所述腳本運行上下文;在所述腳本運行上下文中,創建並初始化所述第三方引擎內置的類。
3.根據權利要求1或2所述的方法,其特徵在於,所述第三方引擎為蜘蛛猴 SpiderMonkey 弓丨擎。
4.根據權利要求3所述的方法,其特徵在於,創建JavaScript腳本文件的編譯環境之 後,所述方法還包括在所述SpiderMonkey引擎中,按照用戶的功能需求定義類和/或函數。
5.根據權利要求4所述的方法,其特徵在於,解析所述JavaScript腳本文件之後,所述 方法還包括運行解析後的所述JavaScript腳本文件。
6.根據權利要求5所述的方法,其特徵在於,在所述運行解析後的JavaScript腳本文 件過程中,還包括所述JavaScript腳本文件使用所述按照用戶的功能需求定義的類和/或函數、或用來 調用SpiderMonkey內置的類。
7.根據權利要求5所述的方法,其特徵在於,所述運行解析後的JavaScript腳本文件 的過程包括在緩衝區中存儲所述解析後的JavaScript腳本文件,將存儲的地址和所述緩衝區長 度作為運行函數的參數,執行所述運行函數;或,使用運行函數調用所述解析後的JavaScript腳本文件,在執行所述運行函數之後 返回再次調用的指針變量。
8.根據權利要求1所述的方法,其特徵在於,所述Widget引擎為電視機中的TVWidget 引擎、手機中的Widget引擎、或計算機中的Widget引擎。
9.在Widget引擎中使用第三方引擎解析腳本文件的裝置,其特徵在於,包括 編譯單元,用於將所述第三方引擎的原始碼編譯成相應的庫文件;設置單元,用於通過所述第三方引擎的庫文件的函數創建JavaScript腳本文件的編 譯環境;獲取單元,用於通過所述Widget引擎獲得Widget程序中的JavaScript腳本文件; 執行單元,用於使用所述第三方引擎的庫文件的函數解析所述JavaScript腳本文件。
10.根據權利要求9所述的裝置,其特徵在於,還包括運行單元,用於運行所述執行單元解析後的所述JavaScript腳本文件。
全文摘要
本發明公開了一種在Widget引擎中使用第三方引擎解析腳本文件的方法和裝置,本發明的方法包括將所述第三方引擎的原始碼編譯成相應的庫文件;調用所述第三方引擎相關函數創建JavaScript腳本文件的編譯環境;所述Widget引擎獲得Widget程序中的JavaScript腳本文件;使用所述第三方引擎相關函數解析所述JavaScript腳本文件。本發明通過在Widget引擎中加入了第三方引擎,可解析符合JavaScript語法的JavaScript腳本文件,實現了Widget引擎解析JavaScript腳本的功能,突破了Widget引擎解析JavaScript腳本的瓶頸問題。第三方引擎採用SpiderMonkey引擎,解析性強,可移植性好。
文檔編號G06F9/45GK101799766SQ20101014048
公開日2010年8月11日 申請日期2010年3月26日 優先權日2010年3月26日
發明者段寶山 申請人:青島海信電器股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀