两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

插件加載方法及裝置制造方法

文檔序號(hào):6500724閱讀:119來(lái)源:國(guó)知局
插件加載方法及裝置制造方法
【專利摘要】一種插件加載方法,包括:捕捉插件調(diào)用事件;獲取所述插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí);在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;在未查找到所述運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)所述插件下載地址下載與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;載入所述運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件。此外,還提供了一種插件加載裝置。上述插件加載方法及裝置能夠提高瀏覽速度。
【專利說(shuō)明】插件加載方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,特別是涉及一種插件加載方法及裝置。

【背景技術(shù)】
[0002]隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,智能終端已得到廣泛應(yīng)用,例如智能手機(jī)、平板電腦等。智能手機(jī)可通過(guò)數(shù)據(jù)信道接入互聯(lián)網(wǎng)。用戶可使用智能手機(jī)上的瀏覽器瀏覽網(wǎng)頁(yè)。
[0003]傳統(tǒng)技術(shù)中的智能手機(jī)瀏覽器提供有插件接口,當(dāng)用戶觸發(fā)的事件瀏覽器原生的事件處理函數(shù)無(wú)法處理時(shí)則調(diào)用相應(yīng)的插件中的事件處理函數(shù)對(duì)該事件進(jìn)行處理。例如,若加載的網(wǎng)頁(yè)資源文件中包含Pdf文檔,而瀏覽器原生的事件處理函數(shù)無(wú)法解析pdf文檔,但瀏覽器可通過(guò)調(diào)用Pdf預(yù)覽插件中相應(yīng)的事件處理函數(shù)來(lái)解析該pdf文檔,從而實(shí)現(xiàn)瀏覽器本身并不具備的Pdf文檔預(yù)覽功能。
[0004]然而,傳統(tǒng)技術(shù)中的瀏覽器在加載的插件之前需要先下載安裝包進(jìn)行安裝。例如在Android系統(tǒng)中,需要預(yù)先下載插件的apk安裝文件并通過(guò)Android系統(tǒng)的安裝工具將插件安裝到Android系統(tǒng)中,并重啟瀏覽器,才能在捕捉到相應(yīng)事件時(shí),調(diào)用該已安裝插件的事件處理函數(shù)。使得用戶在希望使用瀏覽器的擴(kuò)展功能時(shí),需要等待較長(zhǎng)時(shí)間的安裝過(guò)程且需要重啟瀏覽器,從而影響了用戶的瀏覽速度。


【發(fā)明內(nèi)容】

[0005]基于此,有必要提供一種能提高瀏覽速度的插件加載方法。
[0006]所述插件加載方法,包括:
[0007]捕捉插件調(diào)用事件;
[0008]獲取所述插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí);
[0009]在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;
[0010]在未查找到所述運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)所述插件下載地址下載與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;
[0011]載入所述運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件。
[0012]此外,還有必要提供一種能提高瀏覽速度的插件加載裝置。
[0013]所述插件加載裝置,包括:
[0014]事件捕捉模塊,用于捕捉插件調(diào)用事件;
[0015]插件標(biāo)識(shí)獲取模塊,用于獲取所述插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí);
[0016]本地查找模塊,用于在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;
[0017]插件下載模塊,用于在未查找到所述運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)所述插件下載地址下載與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;
[0018]插件載入模塊,用于載入所述運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件。
[0019]上述插件加載方法及裝置,可在瀏覽器上未安裝插件時(shí),自動(dòng)下載插件對(duì)應(yīng)的運(yùn)行庫(kù)文件,并通過(guò)載入運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理相應(yīng)的插件調(diào)用事件,使得用戶在調(diào)用插件時(shí),無(wú)需通過(guò)操作系統(tǒng)來(lái)安裝插件,且調(diào)用過(guò)程無(wú)需重啟瀏覽器來(lái)重新加載已安裝的插件,為用戶調(diào)用瀏覽器插件提供了便利,從而提高了瀏覽速度。

【專利附圖】

【附圖說(shuō)明】
[0020]圖1為一個(gè)實(shí)施例中插件加載方法的流程圖;
[0021]圖2為一個(gè)實(shí)施例中插件調(diào)用過(guò)程中瀏覽器的界面展示圖;
[0022]圖3為一個(gè)實(shí)施例中插件調(diào)用過(guò)程中瀏覽器的界面展示圖;
[0023]圖4為一個(gè)實(shí)施例中插件調(diào)用過(guò)程中瀏覽器的界面展示圖;
[0024]圖5為一個(gè)實(shí)施例中插件加載裝置的結(jié)構(gòu)示意圖;
[0025]圖6為另一個(gè)實(shí)施例中插件加載裝置的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0026]在一個(gè)實(shí)施例中,如圖1所示,一種插件加載方法,該方法全部以計(jì)算機(jī)程序?yàn)橐罁?jù)來(lái)實(shí)現(xiàn),包括以下步驟:
[0027]步驟S102,捕捉插件調(diào)用事件。
[0028]插件調(diào)用事件即用戶通過(guò)瀏覽器輸入的操作行為觸發(fā)的用于調(diào)用相應(yīng)插件的瀏覽器事件。
[0029]例如,若用戶通過(guò)瀏覽器瀏覽的網(wǎng)頁(yè)中包含類型為pdf文檔的資源文件,則瀏覽器在加載該網(wǎng)頁(yè)時(shí),會(huì)拋出預(yù)覽Pdf文檔的插件調(diào)用事件,用于調(diào)用相應(yīng)的Pdf文檔預(yù)覽插件查看該P(yáng)df文檔;若用戶訪問(wèn)的網(wǎng)站為購(gòu)物網(wǎng)站,則瀏覽器在判斷訪問(wèn)的網(wǎng)頁(yè)地址屬于預(yù)設(shè)的購(gòu)物網(wǎng)站列表之后,會(huì)獲取該網(wǎng)頁(yè)中的產(chǎn)品信息和價(jià)格信息,并根據(jù)該產(chǎn)品信息和價(jià)格信息生成并拋出插件調(diào)用事件,用于調(diào)用相應(yīng)的比價(jià)插件搜索多個(gè)購(gòu)物網(wǎng)站上相同的產(chǎn)品各自對(duì)應(yīng)的價(jià)格。
[0030]在一個(gè)實(shí)施例中,還可預(yù)先以圖標(biāo)或鏈接的形式展示瀏覽器支持的所有插件(僅僅是支持,并不一定已安裝該插件),通過(guò)獲取圖標(biāo)或鏈接上的點(diǎn)擊操作來(lái)捕捉插件調(diào)用事件。
[0031]步驟S104,獲取插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí)。
[0032]在一個(gè)實(shí)施例中,插件調(diào)用事件具有事件標(biāo)識(shí)。預(yù)先建立有插件調(diào)用事件的事件標(biāo)識(shí)與插件標(biāo)識(shí)的對(duì)應(yīng)關(guān)系??筛鶕?jù)該對(duì)應(yīng)關(guān)系查找與插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí)。
[0033]步驟S106,在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件。
[0034]運(yùn)行庫(kù)文件即插件標(biāo)識(shí)對(duì)應(yīng)的插件的程序文件。運(yùn)行庫(kù)文件包括庫(kù)函數(shù)文件和/或資源文件。庫(kù)函數(shù)文件可以是二進(jìn)制文件。例如,在Android系統(tǒng)中,庫(kù)函數(shù)文件可以是dex文件;在基于java虛擬機(jī)運(yùn)行的系統(tǒng)中,庫(kù)函數(shù)文件可以是class文件。資源文件可包括圖片、音頻和視頻等文件。
[0035]在一個(gè)實(shí)施例中,可獲取本地插件列表,本地插件列表中記錄有瀏覽器已包含的插件的插件標(biāo)識(shí)以及該插件對(duì)應(yīng)的運(yùn)行庫(kù)文件在本地的存儲(chǔ)位置。在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟可具體為:判斷獲取到的插件標(biāo)識(shí)是否屬于本地插件列表,若是,則查找到;否則,未查找到。
[0036]步驟S108,在未查找到運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)插件下載地址下載與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件。
[0037]可預(yù)先設(shè)置服務(wù)器用于發(fā)布插件。服務(wù)器可預(yù)先將發(fā)布的插件對(duì)應(yīng)的運(yùn)行庫(kù)文件打成壓縮包,插件下載地址即為服務(wù)器的地址。插件下載地址可預(yù)先存儲(chǔ)于瀏覽器的配置文件中,并與插件標(biāo)識(shí)對(duì)應(yīng)。可讀取配置文件獲取與插件標(biāo)識(shí)對(duì)應(yīng)的插件下載地址,根據(jù)讀取到的插件下載地址下載壓縮包,通過(guò)解壓壓縮包獲取運(yùn)行庫(kù)文件。
[0038]在一個(gè)實(shí)施例中,根據(jù)插件下載地址下載與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟之后還可對(duì)運(yùn)行庫(kù)文件進(jìn)行校驗(yàn)。
[0039]例如,服務(wù)器上存儲(chǔ)有已發(fā)布的插件的運(yùn)行庫(kù)文件和其對(duì)應(yīng)的md5碼。在根據(jù)插件下載地址下載運(yùn)行庫(kù)文件后繼續(xù)下載該運(yùn)行庫(kù)文件的md5碼,然后根據(jù)該md5碼對(duì)下載得到的運(yùn)行庫(kù)文件進(jìn)行校驗(yàn),從而可防止插件在下載過(guò)程中被植入病毒或木馬程序,提高安全性。
[0040]在一個(gè)實(shí)施例中,在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟之后還可在查找到運(yùn)行庫(kù)文件時(shí),讀取運(yùn)行庫(kù)文件。
[0041 ] 在本實(shí)施例中,若本地插件列表中包含插件標(biāo)識(shí),則查找到運(yùn)行庫(kù)文件。可在本地插件列表中獲取插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的本地的存儲(chǔ)位置,根據(jù)該存儲(chǔ)位置讀取運(yùn)行庫(kù)文件。
[0042]在本實(shí)施例中,與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件下載完畢后,可將其存儲(chǔ)在本地的存儲(chǔ)單元上,并將存儲(chǔ)位置與插件標(biāo)識(shí)關(guān)聯(lián)后添加到本地插件列表中。用戶再次調(diào)用該插件時(shí),即無(wú)需下載,而直接在本地讀取。
[0043]步驟S110,載入運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理插件調(diào)用事件。
[0044]載入運(yùn)行庫(kù)文件即通過(guò)調(diào)用操作系統(tǒng)的類加載函數(shù)將運(yùn)行庫(kù)文件加載到內(nèi)存中。例如,在基于java的操作系統(tǒng)中可通過(guò)類加載器(如classLoader)將class文件加載到內(nèi)存中。
[0045]在一個(gè)實(shí)施例中,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理插件調(diào)用事件的步驟可具體為:通過(guò)反射機(jī)制創(chuàng)建與運(yùn)行庫(kù)文件對(duì)應(yīng)的插件對(duì)象實(shí)例,調(diào)用插件對(duì)象實(shí)例的事件處理函數(shù)處理插件調(diào)用事件。
[0046]反射機(jī)制為一種運(yùn)行時(shí)代碼裝配機(jī)制,可在運(yùn)行時(shí)根據(jù)庫(kù)函數(shù)的二進(jìn)制內(nèi)存映射獲取其中的類、屬性和函數(shù)定義,并根據(jù)該屬性和函數(shù)定義動(dòng)態(tài)創(chuàng)建對(duì)象實(shí)例。
[0047]在本實(shí)施例中,可預(yù)先定義與插件調(diào)用事件的事件標(biāo)識(shí)對(duì)應(yīng)的事件處理函數(shù)的函數(shù)名,可通過(guò)該函數(shù)名在插件對(duì)象實(shí)例中獲取相應(yīng)的事件處理函數(shù),然后通過(guò)調(diào)用該事件處理函數(shù)處理插件調(diào)用事件。
[0048]例如,如前所述的,若捕獲到的插件調(diào)用事件為比價(jià)事件,則先將比價(jià)插件對(duì)應(yīng)的運(yùn)行庫(kù)文件加載到內(nèi)存中,然后通過(guò)反射機(jī)制創(chuàng)建其對(duì)應(yīng)的插件對(duì)象實(shí)例,然后根據(jù)預(yù)設(shè)的函數(shù)名調(diào)用該插件對(duì)象實(shí)例中的事件處理函數(shù),并將比價(jià)事件中包含的產(chǎn)品信息和價(jià)格信息作為參數(shù)傳遞給該事件處理函數(shù),該事件處理函數(shù)即可根據(jù)其內(nèi)預(yù)先定義的事件處理邏輯搜索多個(gè)購(gòu)物網(wǎng)站上與該產(chǎn)品相同或相似的多個(gè)產(chǎn)品的價(jià)格信息,并生成相應(yīng)的價(jià)格比較曲線展示給用戶。
[0049]在一個(gè)實(shí)施例中,在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟之前還可獲取支持插件列表,判斷插件標(biāo)識(shí)是否屬于支持插件列表,若是,則繼續(xù)執(zhí)行在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟。
[0050]在本實(shí)施例中,判斷插件標(biāo)識(shí)是否屬于支持插件列表的步驟之后還可在插件標(biāo)識(shí)不屬于支持插件列表時(shí),通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理插件調(diào)用事件。
[0051]支持插件列表可由服務(wù)器下載,支持插件列表中可記錄有服務(wù)器上存儲(chǔ)的已發(fā)布的插件的插件標(biāo)識(shí)。
[0052]在插件標(biāo)識(shí)不屬于支持插件列表時(shí),則意味著瀏覽器以及瀏覽器支持的插件無(wú)法處理該插件調(diào)用事件,則將其上拋,成為操作系統(tǒng)事件,然后通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理該事件。
[0053]如前例所述,在一個(gè)應(yīng)用場(chǎng)景中,若用戶瀏覽的網(wǎng)頁(yè)中包含pdf文檔的資源文件,而支持插件列表中并無(wú)相應(yīng)的Pdf文檔查看插件與之對(duì)應(yīng),則將該預(yù)覽pdf文檔的插件調(diào)用事件上拋,然后通過(guò)調(diào)用操作系統(tǒng)中的Pdf查看程序的接口函數(shù)即可預(yù)覽該pdf文檔。例如,可通過(guò)調(diào)用adobe reader或foxit reader等pdf應(yīng)用程序的接口函數(shù),并將該pdf的文件名作為參數(shù)傳遞給該接口函數(shù)來(lái)預(yù)覽Pdf文檔。
[0054]在另一個(gè)應(yīng)用場(chǎng)景中,請(qǐng)同時(shí)參考圖2、圖3和圖4,用戶可點(diǎn)擊手機(jī)瀏覽器上的工具欄展開(kāi)支持插件列表,工具欄中則以圖標(biāo)的形式展示支持插件列表中的多個(gè)插件,若用戶希望調(diào)用“印象筆記”插件來(lái)記錄隨筆日記,則通過(guò)點(diǎn)擊印象筆記插件對(duì)應(yīng)的圖標(biāo)來(lái)觸發(fā)插件調(diào)用事件。在瀏覽器捕獲到該插件調(diào)用事件后,經(jīng)在本地查找發(fā)現(xiàn)該“印象筆記”插件還未下載過(guò),則根據(jù)預(yù)設(shè)的插件下載地址訪問(wèn)服務(wù)器進(jìn)行下載,同時(shí)在圖標(biāo)下方通過(guò)進(jìn)度條展示該插件對(duì)應(yīng)的運(yùn)行庫(kù)文件的下載進(jìn)度。在下載完畢后,將其存儲(chǔ)到本地預(yù)設(shè)的存儲(chǔ)位置,并在本地插件列表中記錄該存儲(chǔ)位置,同時(shí),載入已下載的運(yùn)行庫(kù)文件,然后通過(guò)反射機(jī)制創(chuàng)建插件對(duì)象實(shí)例,并調(diào)用該插件對(duì)象實(shí)例中相應(yīng)的事件處理函數(shù)來(lái)處理前述的插件調(diào)用事件,即展開(kāi)輸入筆記輸入窗口,方便用戶輸入。整個(gè)過(guò)程并不需要通過(guò)操作系統(tǒng)安裝應(yīng)用程序,下載完成后也無(wú)需重啟瀏覽器,從而為用戶調(diào)用插件提供了便利,提高了瀏覽速度。
[0055]在一個(gè)實(shí)施例中,如圖5所示,一種插件加載裝置,包括事件捕捉模塊102、插件標(biāo)識(shí)獲取模塊104、本地查找模塊106、插件下載模塊108以及插件載入模塊110,其中:
[0056]事件捕捉模塊102,用于捕捉插件調(diào)用事件。
[0057]插件調(diào)用事件即用戶通過(guò)瀏覽器輸入的操作行為觸發(fā)的用于調(diào)用相應(yīng)插件的瀏覽器事件。
[0058]例如,若用戶通過(guò)瀏覽器瀏覽的網(wǎng)頁(yè)中包含類型為pdf文檔的資源文件,則瀏覽器在加載該網(wǎng)頁(yè)時(shí),會(huì)拋出預(yù)覽Pdf文檔的插件調(diào)用事件,用于調(diào)用相應(yīng)的Pdf文檔預(yù)覽插件查看該P(yáng)df文檔;若用戶訪問(wèn)的網(wǎng)站為購(gòu)物網(wǎng)站,則瀏覽器在判斷訪問(wèn)的網(wǎng)頁(yè)地址屬于預(yù)設(shè)的購(gòu)物網(wǎng)站列表之后,會(huì)獲取該網(wǎng)頁(yè)中的產(chǎn)品信息和價(jià)格信息,并根據(jù)該產(chǎn)品信息和價(jià)格信息生成并拋出插件調(diào)用事件,用于調(diào)用相應(yīng)的比價(jià)插件搜索多個(gè)購(gòu)物網(wǎng)站上相同的產(chǎn)品各自對(duì)應(yīng)的價(jià)格。
[0059]在一個(gè)實(shí)施例中,還可預(yù)先以圖標(biāo)或鏈接的形式展示瀏覽器支持的所有插件(僅僅是支持,并不一定已安裝該插件),通過(guò)獲取圖標(biāo)或鏈接上的點(diǎn)擊操作來(lái)捕捉插件調(diào)用事件。
[0060]插件標(biāo)識(shí)獲取模塊104,用于獲取插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí)。
[0061]在一個(gè)實(shí)施例中,插件調(diào)用事件具有事件標(biāo)識(shí)。預(yù)先建立有插件調(diào)用事件的事件標(biāo)識(shí)與插件標(biāo)識(shí)的對(duì)應(yīng)關(guān)系。插件標(biāo)識(shí)獲取模塊104可用于根據(jù)該對(duì)應(yīng)關(guān)系查找與插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí)。
[0062]本地查找模塊106,用于在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件。
[0063]運(yùn)行庫(kù)文件即插件標(biāo)識(shí)對(duì)應(yīng)的插件的程序文件。運(yùn)行庫(kù)文件包括庫(kù)函數(shù)文件和/或資源文件。庫(kù)函數(shù)文件可以是二進(jìn)制文件。例如,在Android系統(tǒng)中,庫(kù)函數(shù)文件可以是dex文件;在基于java虛擬機(jī)運(yùn)行的系統(tǒng)中,庫(kù)函數(shù)文件可以是class文件。資源文件可包括圖片、音頻和視頻等文件。
[0064]在一個(gè)實(shí)施例中,本地查找模塊106可用于獲取本地插件列表,本地插件列表中記錄有瀏覽器已包含的插件的插件標(biāo)識(shí)以及該插件對(duì)應(yīng)的運(yùn)行庫(kù)文件在本地的存儲(chǔ)位置。本地查找模塊106還可用于通過(guò)判斷獲取到的插件標(biāo)識(shí)是否屬于本地插件列表來(lái)在本地查找與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件,若是,則查找到;否則,未查找到。
[0065]插件下載模塊108,用于在未查找到運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)插件下載地址下載與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件。
[0066]可預(yù)先設(shè)置服務(wù)器用于發(fā)布插件。服務(wù)器可預(yù)先將發(fā)布的插件對(duì)應(yīng)的運(yùn)行庫(kù)文件打成壓縮包,插件下載地址即為服務(wù)器的地址。插件下載地址可預(yù)先存儲(chǔ)于瀏覽器的配置文件中,并與插件標(biāo)識(shí)對(duì)應(yīng)??勺x取配置文件獲取與插件標(biāo)識(shí)對(duì)應(yīng)的插件下載地址,根據(jù)讀取到的插件下載地址下載壓縮包,通過(guò)解壓壓縮包獲取運(yùn)行庫(kù)文件。
[0067]在一個(gè)實(shí)施例中,插件下載模塊108還可用于在根據(jù)插件下載地址下載與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件之后對(duì)運(yùn)行庫(kù)文件進(jìn)行校驗(yàn)。
[0068]例如,服務(wù)器上存儲(chǔ)有已發(fā)布的插件的運(yùn)行庫(kù)文件和其對(duì)應(yīng)的md5碼。在根據(jù)插件下載地址下載運(yùn)行庫(kù)文件后繼續(xù)下載該運(yùn)行庫(kù)文件的md5碼,然后根據(jù)該md5碼對(duì)下載得到的運(yùn)行庫(kù)文件進(jìn)行校驗(yàn),從而可防止插件在下載過(guò)程中被植入病毒或木馬程序,提高安全性。
[0069]在一個(gè)實(shí)施例中,如圖6所示,插件加載裝置還包括本地讀取模塊112,用于在本地查找到運(yùn)行庫(kù)文件時(shí),讀取運(yùn)行庫(kù)文件。
[0070]在本實(shí)施例中,若本地插件列表中包含插件標(biāo)識(shí),則查找到運(yùn)行庫(kù)文件。本地讀取模塊112可用于在本地插件列表中獲取插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的本地的存儲(chǔ)位置,根據(jù)該存儲(chǔ)位置讀取運(yùn)行庫(kù)文件。
[0071]在本實(shí)施例中,與插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件下載完畢后,可將其存儲(chǔ)在本地的存儲(chǔ)單元上,并將存儲(chǔ)位置與插件標(biāo)識(shí)關(guān)聯(lián)后添加到本地插件列表中。用戶再次調(diào)用該插件時(shí),即無(wú)需下載,而直接在本地讀取。
[0072]插件載入模塊110,用于載入運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理插件調(diào)用事件。
[0073]載入運(yùn)行庫(kù)文件即通過(guò)調(diào)用操作系統(tǒng)的類加載函數(shù)將運(yùn)行庫(kù)文件加載到內(nèi)存中。例如,在基于java的操作系統(tǒng)中可通過(guò)類加載器(如classLoader)將class文件加載到內(nèi)存中。
[0074]在一個(gè)實(shí)施例中,插件載入模塊110可用于通過(guò)反射機(jī)制創(chuàng)建與運(yùn)行庫(kù)文件對(duì)應(yīng)的插件對(duì)象實(shí)例,調(diào)用插件對(duì)象實(shí)例的事件處理函數(shù)處理插件調(diào)用事件。
[0075]反射機(jī)制為一種運(yùn)行時(shí)代碼裝配機(jī)制,可在運(yùn)行時(shí)根據(jù)庫(kù)函數(shù)的二進(jìn)制內(nèi)存映射獲取其中的類、屬性和函數(shù)定義,并根據(jù)該屬性和函數(shù)定義動(dòng)態(tài)創(chuàng)建對(duì)象實(shí)例。
[0076]在本實(shí)施例中,可預(yù)先定義與插件調(diào)用事件的事件標(biāo)識(shí)對(duì)應(yīng)的事件處理函數(shù)的函數(shù)名,可通過(guò)該函數(shù)名在插件對(duì)象實(shí)例中獲取相應(yīng)的事件處理函數(shù),然后通過(guò)調(diào)用該事件處理函數(shù)處理插件調(diào)用事件。
[0077]例如,如前所述的,若捕獲到的插件調(diào)用事件為比價(jià)事件,則先將比價(jià)插件對(duì)應(yīng)的運(yùn)行庫(kù)文件加載到內(nèi)存中,然后通過(guò)反射機(jī)制創(chuàng)建其對(duì)應(yīng)的插件對(duì)象實(shí)例,然后根據(jù)預(yù)設(shè)的函數(shù)名調(diào)用該插件對(duì)象實(shí)例中的事件處理函數(shù),并將比價(jià)事件中包含的產(chǎn)品信息和價(jià)格信息作為參數(shù)傳遞給該事件處理函數(shù),該事件處理函數(shù)即可根據(jù)其內(nèi)預(yù)先定義的事件處理邏輯搜索多個(gè)購(gòu)物網(wǎng)站上與該產(chǎn)品相同或相似的多個(gè)產(chǎn)品的價(jià)格信息,并生成相應(yīng)的價(jià)格比較曲線展示給用戶。
[0078]在一個(gè)實(shí)施例中,插件標(biāo)識(shí)獲取模塊104還可用于獲取支持插件列表,判斷插件標(biāo)識(shí)是否屬于支持插件列表,若是,則調(diào)用本地查找模塊106。
[0079]在本實(shí)施例中,如圖6所示,插件加載裝置還包括系統(tǒng)事件處理模塊114,用于在插件標(biāo)識(shí)不屬于支持插件列表時(shí),通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理插件調(diào)用事件。
[0080]支持插件列表可由服務(wù)器下載,支持插件列表中可記錄有服務(wù)器上存儲(chǔ)的已發(fā)布的插件的插件標(biāo)識(shí)。
[0081]在插件標(biāo)識(shí)不屬于支持插件列表時(shí),則意味著瀏覽器以及瀏覽器支持的插件無(wú)法處理該插件調(diào)用事件,則將其上拋,成為操作系統(tǒng)事件,然后通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理該事件。
[0082]如前例所述,在一個(gè)應(yīng)用場(chǎng)景中,若用戶瀏覽的網(wǎng)頁(yè)中包含pdf文檔的資源文件,而支持插件列表中并無(wú)相應(yīng)的Pdf文檔查看插件與之對(duì)應(yīng),則將該預(yù)覽pdf文檔的插件調(diào)用事件上拋,然后通過(guò)調(diào)用操作系統(tǒng)中的Pdf查看程序的接口函數(shù)即可預(yù)覽該pdf文檔。例如,可通過(guò)調(diào)用adobe reader或foxit reader等pdf應(yīng)用程序的接口函數(shù),并將該pdf的文件名作為參數(shù)傳遞給該接口函數(shù)來(lái)預(yù)覽Pdf文檔。
[0083]在另一個(gè)應(yīng)用場(chǎng)景中,請(qǐng)同時(shí)參考圖2、圖3和圖4,用戶可點(diǎn)擊手機(jī)瀏覽器上的工具欄展開(kāi)支持插件列表,工具欄中則以圖標(biāo)的形式展示支持插件列表中的多個(gè)插件,若用戶希望調(diào)用“印象筆記”插件來(lái)記錄隨筆日記,則通過(guò)點(diǎn)擊印象筆記插件對(duì)應(yīng)的圖標(biāo)來(lái)觸發(fā)插件調(diào)用事件。在瀏覽器捕獲到該插件調(diào)用事件后,經(jīng)在本地查找發(fā)現(xiàn)該“印象筆記”插件還未下載過(guò),則根據(jù)預(yù)設(shè)的插件下載地址訪問(wèn)服務(wù)器進(jìn)行下載,同時(shí)在圖標(biāo)下方通過(guò)進(jìn)度條展示該插件對(duì)應(yīng)的運(yùn)行庫(kù)文件的下載進(jìn)度。在下載完畢后,將其存儲(chǔ)到本地預(yù)設(shè)的存儲(chǔ)位置,并在本地插件列表中記錄該存儲(chǔ)位置,同時(shí),載入已下載的運(yùn)行庫(kù)文件,然后通過(guò)反射機(jī)制創(chuàng)建插件對(duì)象實(shí)例,并調(diào)用該插件對(duì)象實(shí)例中相應(yīng)的事件處理函數(shù)來(lái)處理前述的插件調(diào)用事件,即展開(kāi)輸入筆記輸入窗口,方便用戶輸入。整個(gè)過(guò)程并不需要通過(guò)操作系統(tǒng)安裝應(yīng)用程序,下載完成后也無(wú)需重啟瀏覽器,從而為用戶調(diào)用插件提供了便利,提高了瀏覽速度。
[0084]上述插件加載方法及裝置,可在瀏覽器上未安裝插件時(shí),自動(dòng)下載插件對(duì)應(yīng)的運(yùn)行庫(kù)文件,并通過(guò)載入運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理相應(yīng)的插件調(diào)用事件,使得用戶在調(diào)用插件時(shí),無(wú)需通過(guò)操作系統(tǒng)來(lái)安裝插件,且調(diào)用過(guò)程無(wú)需重啟瀏覽器來(lái)重新加載已安裝的插件,為用戶調(diào)用瀏覽器插件提供了便利,從而提高了瀏覽速度。
[0085]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。
[0086]以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1.一種插件加載方法,其特征在于,該方法包括: 捕捉插件調(diào)用事件; 獲取所述插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí); 在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件; 在未查找到所述運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)所述插件下載地址下載與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件;及 載入所述運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件。
2.根據(jù)權(quán)利要求1所述的插件加載方法,其特征在于,該方法還包括: 在查找到所述運(yùn)行庫(kù)文件時(shí),讀取所述運(yùn)行庫(kù)文件,并繼續(xù)執(zhí)行所述載入運(yùn)行庫(kù)文件的步驟。
3.根據(jù)權(quán)利要求1所述的插件加載方法,其特征在于,所述在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟之前,該方法包括: 獲取支持插件列表; 判斷所述插件標(biāo)識(shí)是否屬于所述支持插件列表,若是,則執(zhí)行所述在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件的步驟。
4.根據(jù)權(quán)利要求3所述的插件加載方法,其特征在于,所述判斷所述插件標(biāo)識(shí)是否屬于所述支持插件列表的步驟之后還包括: 若所述插件標(biāo)識(shí)不屬于所述支持插件列表,則通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理所述插件調(diào)用事件。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的插件加載方法,其特征在于,該方法還包括: 對(duì)所述運(yùn)行庫(kù)文件進(jìn)行校驗(yàn)。
6.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的插件加載方法,其特征在于,所述調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件的步驟包括: 通過(guò)反射機(jī)制創(chuàng)建與運(yùn)行庫(kù)文件對(duì)應(yīng)的插件對(duì)象實(shí)例; 調(diào)用所述插件對(duì)象實(shí)例的事件處理函數(shù)以處理所述插件調(diào)用事件。
7.一種插件加載裝置,其特征在于,包括: 事件捕捉模塊,用于捕捉插件調(diào)用事件; 插件標(biāo)識(shí)獲取模塊,用于獲取所述插件調(diào)用事件對(duì)應(yīng)的插件標(biāo)識(shí); 本地查找模塊,用于在本地查找與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件; 插件下載模塊,用于在未查找到所述運(yùn)行庫(kù)文件時(shí),獲取預(yù)設(shè)的插件下載地址,根據(jù)所述插件下載地址下載與所述插件標(biāo)識(shí)對(duì)應(yīng)的運(yùn)行庫(kù)文件; 插件載入模塊,用于載入所述運(yùn)行庫(kù)文件,調(diào)用對(duì)應(yīng)的事件處理函數(shù)處理所述插件調(diào)用事件。
8.根據(jù)權(quán)利要求7所述的插件加載裝置,其特征在于,所述裝置還包括本地讀取模塊,用于在查找到所述運(yùn)行庫(kù)文件時(shí),讀取所述運(yùn)行庫(kù)文件,并繼續(xù)調(diào)用所述插件載入模塊。
9.根據(jù)權(quán)利要求7所述的插件加載裝置,其特征在于,所述插件標(biāo)識(shí)獲取模塊還用于獲取支持插件列表,在所述插件標(biāo)識(shí)屬于所述支持插件列表時(shí),調(diào)用所述本地查找模塊。
10.根據(jù)權(quán)利要求9所述的插件加載裝置,其特征在于,所述裝置還包括系統(tǒng)事件處理模塊,用于在所述插件標(biāo)識(shí)不屬于所述支持插件列表時(shí),通過(guò)調(diào)用操作系統(tǒng)的事件處理函數(shù)處理所述插件調(diào)用事件。
11.根據(jù)權(quán)利要求7至10任一項(xiàng)所述的插件加載裝置,其特征在于,所述插件下載模塊還用于對(duì)所述運(yùn)行庫(kù)文件進(jìn)行校驗(yàn)。
12.根據(jù)權(quán)利要求7至10任一項(xiàng)所述的插件加載裝置,其特征在于,所述插件載入模塊還用于通過(guò)反射機(jī)制創(chuàng)建與運(yùn)行庫(kù)文件對(duì)應(yīng)的插件對(duì)象實(shí)例,調(diào)用所述插件對(duì)象實(shí)例的事件處理函數(shù)以處理所 述插件調(diào)用事件。
【文檔編號(hào)】G06F9/445GK104049986SQ201310081735
【公開(kāi)日】2014年9月17日 申請(qǐng)日期:2013年3月14日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】劉人方, 胡博, 王智培, 周睿奕, 王曦, 謝鄭凱, 黃英, 李未, 馮誠(chéng), 張凱, 楊惠姣 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
察雅县| 靖安县| 安仁县| 阿城市| 梧州市| 深水埗区| 黄陵县| 宝兴县| 渭源县| 通辽市| 大连市| 江油市| 安康市| 多伦县| 大田县| 来凤县| 绍兴市| 石楼县| 成都市| 固安县| 甘孜| 保山市| 马公市| 囊谦县| 公安县| 阿巴嘎旗| 桃江县| 白玉县| 金昌市| 香格里拉县| 蒙山县| 新源县| 陕西省| 北流市| 岑溪市| 伊宁县| 饶河县| 宁津县| 和田市| 罗田县| 休宁县|