本發(fā)明涉及一種插件調(diào)用方法,尤其涉及一種基于http的web插件調(diào)用方法及系統(tǒng)。
背景技術(shù):
目前的瀏覽器插件技術(shù),分別為了基于微軟的ActiveX插件技術(shù),基于Mozilla的NPAPI插件技術(shù)以及基于Google的PPAPI插件技術(shù)。對(duì)于ActiveX插件技術(shù),目前只有在IE11及以下的瀏覽器中支持;對(duì)于NPAPI技術(shù),Mozilla官方已經(jīng)宣布,F(xiàn)irefox瀏覽器將在2016年底徹底放棄對(duì)NPAPI類插件的支持;而對(duì)于NPAPI技術(shù)在主流的Chrome瀏覽器上,Chrome在45版本以上的瀏覽器上已經(jīng)不再支持。所以,目前來(lái)說(shuō),沒(méi)有一種插件技術(shù)能夠同時(shí)滿足在多種瀏覽器中的使用。并且對(duì)于不同的瀏覽器,由于實(shí)現(xiàn)技術(shù)不同,對(duì)插件的權(quán)限要求也有所不同,導(dǎo)致應(yīng)用系統(tǒng)在調(diào)用插件的時(shí)候,出現(xiàn)調(diào)用失敗,頁(yè)面卡死等情況。再者,若要實(shí)現(xiàn)多種瀏覽器的插件兼容問(wèn)題,需要開(kāi)發(fā)和維護(hù)三種不同技術(shù)版本的插件代碼,在代碼的維護(hù)上,也存在著重復(fù)工作的問(wèn)題,無(wú)形之中增加了bug出現(xiàn)的概率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有的瀏覽器插件不兼容的問(wèn)題,提出了一種基于http的web插件調(diào)用方法。
為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種基于http的web插件調(diào)用方法,該基于http的web插件調(diào)用方法包括:獲取瀏覽器的http請(qǐng)求;根據(jù)瀏覽器的http請(qǐng)求,得出插件調(diào)用需求;調(diào)用插件庫(kù)中的相應(yīng)插件;將調(diào)用結(jié)果通過(guò)http的形式返回給瀏覽器。
其中,插件庫(kù)中存儲(chǔ)有ActiveX插件、NPAPI插件以及PPAPI插件。
其中,瀏覽器的http請(qǐng)求中包含對(duì)插件的調(diào)用需求。
為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種基于http的web插件調(diào)用系統(tǒng)包括,該基于http的web插件調(diào)用系統(tǒng)包括:宿主程序模塊,用于與瀏覽器進(jìn)行信息互通,接收瀏覽器的http請(qǐng)求并將插件調(diào)用結(jié)果以http的形式發(fā)送至瀏覽器;插件模塊,與宿主程序模塊通信連接,存儲(chǔ)有插件以待宿主程序模塊進(jìn)行調(diào)用。
其中,插件模塊中存儲(chǔ)有ActiveX插件、NPAPI插件以及PPAPI插件。
其中,插件模塊進(jìn)一步完成插件本身的功能,實(shí)現(xiàn)插件的輸入輸出功能。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:本發(fā)明實(shí)現(xiàn)了一種控件,適配多種瀏覽器的目的,并且同時(shí)解決了因?yàn)闉g覽器插件技術(shù)的不同,出現(xiàn)的插件調(diào)用失敗,頁(yè)面卡死等情況。在后期的代碼維護(hù)上,也只需要維護(hù)一份代碼,極大的減少了重復(fù)性工作,也降低了插件產(chǎn)品的故障率。
附圖說(shuō)明
圖1是本發(fā)明第一實(shí)施例的基于http的web插件調(diào)用方法的流程圖;
圖2是本發(fā)明第二實(shí)施例的基于http的web插件調(diào)用系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參見(jiàn)圖1,圖1是本發(fā)明第一實(shí)施例的基于http的web插件調(diào)用方法的流程圖。本發(fā)明提供了一種基于http的web插件調(diào)用方法,該基于http的web插件調(diào)用方法包括步驟:
在步驟S11中,獲取瀏覽器的http請(qǐng)求。其中,瀏覽器的http請(qǐng)求中包含對(duì)插件的調(diào)用需求。
在步驟S12中,根據(jù)瀏覽器的http請(qǐng)求,得出插件調(diào)用需求。
在步驟S13中,調(diào)用插件庫(kù)中的相應(yīng)插件。插件庫(kù)中存儲(chǔ)有ActiveX插件、NPAPI插件以及PPAPI插件。當(dāng)然,插件庫(kù)中也可以存儲(chǔ)其他插件,只不過(guò)此三種插件應(yīng)用較廣,因此緊列出此三種插件。
在步驟S14中,將調(diào)用結(jié)果通過(guò)http的形式返回給瀏覽器。宿主程序模塊
請(qǐng)參閱圖2,圖2是本發(fā)明第二實(shí)施例的基于http的web插件調(diào)用系統(tǒng)的結(jié)構(gòu)示意圖。該基于http的web插件調(diào)用系統(tǒng)包括宿主程序模塊22以及插件模塊21。
宿主程序模塊22用于與瀏覽器進(jìn)行信息互通,接收瀏覽器的http請(qǐng)求并將插件調(diào)用結(jié)果以http的形式發(fā)送至瀏覽器。
插件模塊21與宿主程序模塊22通信連接,存儲(chǔ)有插件以待宿主程序模塊22進(jìn)行調(diào)用。其中,插件模塊21中存儲(chǔ)有ActiveX插件、NPAPI插件以及PPAPI插件。插件模塊21還可以進(jìn)一步完成插件本身的功能,實(shí)現(xiàn)插件的輸入輸出功能,以提高效率。
具體來(lái)說(shuō),整個(gè)調(diào)用過(guò)程可以分為三個(gè)模塊。第一個(gè)模塊為瀏覽器腳本10部分,該模塊的功能就是利用瀏覽器腳本10本身可以發(fā)送Http請(qǐng)求的功能,將插件的調(diào)用發(fā)送給本地進(jìn)程。第二個(gè)模塊為插件模塊21,該模塊完成插件本身的功能,實(shí)現(xiàn)插件的輸入輸出功能。第三個(gè)模塊是宿主程序模塊22,該模塊可以加載插件模塊21,對(duì)插件進(jìn)行調(diào)用,解決了瀏覽器只能加載特定技術(shù)下開(kāi)發(fā)的插件的問(wèn)題;同時(shí),宿主模塊可以接收瀏覽器腳本10發(fā)送過(guò)來(lái)的Http調(diào)用請(qǐng)求,并將調(diào)用結(jié)果通過(guò)Http的形式返回給瀏覽器。
在這樣的設(shè)計(jì)模式下,將普通的瀏覽器加載插件的方式,改為了由宿主程序加載插件,解決了因?yàn)闉g覽器不同以及插件技術(shù)不同,導(dǎo)致的插件加載失敗問(wèn)題。而且宿主程序可控,提高了插件加載的成功率。然后,利用了瀏覽器腳本10發(fā)送Http請(qǐng)求的原理,將插件調(diào)用請(qǐng)求發(fā)送給宿主程序,解決了跨進(jìn)程調(diào)用間的問(wèn)題。
例如,在傳統(tǒng)的B/S應(yīng)用模式下,如果用到了插件,那么對(duì)于不同的瀏覽器,相同的插件功能,需要分別開(kāi)發(fā)適用于IE的ACTIVEX控件,適用于FireFox的NPAPI的插件,適用于Chrome的PPAPI插件。同時(shí)在系統(tǒng)下還要針對(duì)不同的瀏覽器,做瀏覽器的代碼適配工作。在系統(tǒng)以后的維護(hù)和升級(jí)過(guò)程中,也需要同時(shí)維護(hù)三種不同技術(shù)的插件,無(wú)形之中增加了系統(tǒng)的復(fù)雜性和維護(hù)成本。如果使用本發(fā)明,只用開(kāi)發(fā)一個(gè)動(dòng)態(tài)鏈接庫(kù)文件,然后在宿主程序中加入此動(dòng)態(tài)鏈接庫(kù)的功能,在B/S應(yīng)用模式下,所有和插件有關(guān)的功能,通過(guò)瀏覽器和宿主程序的通信完成,不用重復(fù)開(kāi)發(fā)基于各個(gè)瀏覽器技術(shù)的插件程序,不但可以減少系統(tǒng)的開(kāi)發(fā)周期和開(kāi)發(fā)成本,還能降低系統(tǒng)后期的維護(hù)成本。
實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:本發(fā)明實(shí)現(xiàn)了一種控件,適配多種瀏覽器的目的,并且同時(shí)解決了因?yàn)闉g覽器插件技術(shù)的不同,出現(xiàn)的插件調(diào)用失敗,頁(yè)面卡死等情況。在后期的代碼維護(hù)上,也只需要維護(hù)一份代碼,極大的減少了重復(fù)性工作,也降低了插件產(chǎn)品的故障率。
以上僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。