欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種加載插件的方法、瀏覽器和服務(wù)器的制造方法

文檔序號:6516696閱讀:291來源:國知局
一種加載插件的方法、瀏覽器和服務(wù)器的制造方法
【專利摘要】本發(fā)明公開了一種加載插件的方法、瀏覽器和服務(wù)器,其中所述方法包括當瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息;依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立所述代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。本發(fā)明可以避免用戶下載和安裝網(wǎng)頁中的ActiveX插件,提高了頁面加載的效率。
【專利說明】—種加載插件的方法、瀏覽器和服務(wù)器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及插件加載的【技術(shù)領(lǐng)域】,特別是涉及一種加載插件的方法、一種瀏覽器以及一種服務(wù)器。
【背景技術(shù)】
[0002]ActiveX是一個開放的集成平臺,為開發(fā)人員、用戶和Web生產(chǎn)商提供了一個快速而簡便的在Internet和Intranet創(chuàng)建程序集成和內(nèi)容的方法。使用ActiveX,可輕松方便的在Web頁中插入多媒體效果、交互式對象、以及復雜程序,創(chuàng)建用戶體驗相當?shù)母哔|(zhì)量多媒體⑶-ROM?;贏ctiveX的ActiveX插件也具有越來越廣泛的應(yīng)用。ActiveX插件技術(shù)是國際上通用的基于Windows平臺的軟件技術(shù),許多軟件均采用此種方式開發(fā),例如Flash動畫播放插件、Microsoft MediaPlayer插件、Adobe PDF閱讀插件等。
[0003]ActiveX插件叫做OLE插件或OCX插件,它是一些軟件組件或?qū)ο?,可以將其插入到WEB網(wǎng)頁或其他應(yīng)用程序中。例如,當用戶瀏覽到特定的網(wǎng)頁時,瀏覽器會提示用戶下載并安裝ActiveX插件。
[0004]在現(xiàn)有技術(shù)中,雖然瀏覽器側(cè)一般都內(nèi)置有一些基本功能的ActiveX插件,但很多網(wǎng)頁也自帶ActiveX插件,其需要用戶下載并安裝網(wǎng)頁自帶的ActiveX插件方能實現(xiàn)網(wǎng)頁的某種功能。例如,瀏覽器內(nèi)置插件Qvod插件,其可以支持一些網(wǎng)頁元素的播放,但網(wǎng)頁中規(guī)定使用百度影音插件來播放一些網(wǎng)頁資源,因此,即使瀏覽器內(nèi)置的Qvod插件支持該網(wǎng)頁中視頻文件的播放,用戶也只能另外下載和安裝百度影音插件進行視頻播放,造成資源的浪費。并且網(wǎng)頁ActiveX插件下載和安裝的過程可能造成網(wǎng)頁的阻滯,使得嵌有ActiveX腳本程序的頁面的加載速度降低,甚至導致瀏覽器瞬間失去響應(yīng)。

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

[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種加載插件的方法和相應(yīng)的一種瀏覽器,以及一種服務(wù)器。
[0006]依據(jù)本發(fā)明的一個方面,提供了一種加載插件的方法,包括:
[0007]當瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0008]將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0009]接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0010]依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0011]建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0012]采用所述代理對象配置所述第二插件對象運行的腳本;
[0013]采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。[0014]可選地,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
[0015]可選地,所述方法還包括:
[0016]瀏覽器側(cè)接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成;
[0017]依據(jù)所述提示信息,創(chuàng)建第一插件對象;
[0018]采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0019]可選地,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述采用所述代理對象配置所述第二插件對象運行的腳本的步驟包括:
[0020]在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0021]采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0022]可選地,所述代理對象通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。
[0023]可選地,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到cogetclassobject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0024]根據(jù)本發(fā)明的另一方面,提供了一種加載插件的方法,包括:
[0025]接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0026]依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0027]可選地,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;
[0028]所述依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè)的步驟,具體包括:
[0029]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;[0030]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0031]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。
[0032]可選地,所述方法還包括:
[0033]在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時,返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0034]根據(jù)本發(fā)明的另一方面,提供了一種瀏覽器,包括:
[0035]代理對象創(chuàng)建模塊,適于在瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0036]第一插件對象的參數(shù)信息發(fā)送模塊,適于將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0037]第二插件對象的參數(shù)信息接收模塊,適于接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0038]第二插件對象創(chuàng)建模塊,適于依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0039]關(guān)聯(lián)建立模塊,適于建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0040]腳本配置模塊,適于采用所述代理對象配置所述第二插件對象運行的腳本;
[0041]第一頁面加載模塊,適于采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
[0042]可選地,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
[0043]可選地,所述瀏覽器還包括:
[0044]提示信息接收模塊,適于接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成;
[0045]第一插件對象創(chuàng)建模塊,適于依據(jù)所述提示信息,創(chuàng)建第一插件對象;
[0046]第二頁面加載模塊,適于采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0047]可選地,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述腳本配置模塊還適于:
[0048]在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0049]采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0050]可選地,所述代理對象通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。[0051]可選地,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到cogetclassobject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0052]根據(jù)本發(fā)明的另一方面,提供了一種服務(wù)器,包括:
[0053]第一插件對象的參數(shù)信息接收模塊,適于接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0054]第二插件對象的參數(shù)信息返回模塊,適于依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0055]可選地,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;
[0056]所述第二插件對象的參數(shù)信息返回模塊還適于:
[0057]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;
[0058]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0059]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。
[0060]可選地,所述服務(wù)器還包括:
[0061]提示信息返回模塊,適于在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時,返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0062]在本發(fā)明中,當瀏覽器側(cè)的頁面進程加載到網(wǎng)頁中的ActiveX插件時,可以將其替換為瀏覽器內(nèi)置的ActiveX插件,使得瀏覽器自帶的ActiveX插件能夠?qū)Ξ斍绊撁嬷衅渲С值奈募袷降木W(wǎng)絡(luò)元素的接管和打開,避免用戶下載和安裝網(wǎng)頁中的ActiveX插件,提高了頁面加載的效率。
[0063]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】

【附圖說明】
[0064]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0065]圖1示出了根據(jù)本發(fā)明一個實施例的一種加載插件的方法實施例一的步驟流程圖;[0066]圖2示出了根據(jù)本發(fā)明一個實施例的一種加載插件的方法實施例二的步驟流程圖;
[0067]圖3示出了根據(jù)本發(fā)明一個實施例的一種瀏覽器實施例的結(jié)構(gòu)框圖;
[0068]圖4示出了根據(jù)本發(fā)明一個實施例的一種服務(wù)器實施例的結(jié)構(gòu)框圖。
【具體實施方式】
[0069]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0070]參照圖1,示出了根據(jù)本發(fā)明一個實施例的一種加載插件的方法實施例一的步驟流程圖,從實施例從瀏覽器側(cè)進行說明,具體可以包括以下步驟:
[0071]步驟101,當瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0072]應(yīng)用于本實施例,所述第一插件對象可以為網(wǎng)頁中規(guī)定使用的ActiveX插件,如百度影音、QVOD (快播)等。所述瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求,具體可以為,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到CoGetClassObject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0073]具體而言,ActiveX插件是一種 COM (Component Object Model,組件對象模型)組件,在COM庫中,有三個API (Application Programming Interface,應(yīng)用程序編程接口)函數(shù)可用于對象的創(chuàng)建,它們分別是CoGetClassObject、CoCreateInstance和CoCreateInstanceEx,通常情況下,客戶程序調(diào)用其中之一完成對象的創(chuàng)建,并返回對象的初始化接口指針,COM庫與類廠(類廠也是一個接口或COM對象,其職責是創(chuàng)造組件的對象并返回給客戶程序一個接口的指針,每個組件都必須有一個與之相關(guān)的類廠)也通過這三個函數(shù)進行交互。
[0074]CoGetClassObject聲明可以表不如下:
[0075]STDAPI CoGetClassObject(REFCLSID rclsid,
[0076]DWORD dwClsContext,
[0077]C0SERVERINF0*pServerInfo,
[0078]REFIID riid,
[0079]LPV0ID*ppv);
[0080]其中,rclsid用來唯一標識一個對象的CLSID(128位),通過rclsid可以知道需要創(chuàng)建的對象(需要用它來創(chuàng)建指定對象);dwClsContext為組件類別,可使用CLSCTX枚舉器中預(yù)定義的值;pServerInfo是一個指針,它指向被實例化的類對象所在的機器(如果是本地機器,參數(shù)為NULL);riid為引用接口標識符,用來與對象通信;ppv作為輸出參數(shù)存放返回的類廠接口指針。
[0081]當客戶程序要調(diào)用COM庫函數(shù)CoCreateInstance以得到類廠接口指針時,CoCreateInstance 調(diào)用函數(shù) CoGetClassObject,在函數(shù) CoGetClassObject 中使用參數(shù)CLSID查找注冊表,找到COM組件DLL的路徑并加載,調(diào)用所述DLL中實現(xiàn)的函數(shù)DllGetClassObject, DllGetClassObject函數(shù)創(chuàng)建類廠,并逆序返回類廠接口指針給CoGetClassObject,依據(jù)所述類廠接口指針創(chuàng)建對象。而在本發(fā)明實施例中,當瀏覽器側(cè)的頁面進程需要創(chuàng)建對象時,對CoGetClassObject函數(shù)進行hook (hook是Windows中提供的一種用以替換DOS下“中斷”的系統(tǒng)機制,中文譯為“掛鉤”或“鉤子”),從而阻止對象的創(chuàng)建。
[0082]在本發(fā)明實施例中,對于hook到瀏覽器側(cè)中的CoGetClassObject函數(shù)而知道需要創(chuàng)建對象,從而啟動代理對象(Prox對象)的創(chuàng)建,使用Prox對象替換CoGetClassObject函數(shù)實際要創(chuàng)建的對象。其中,Prox對象包括一系列接口,包括IUnknown指針將會調(diào)用的很多標準接口,例如IOleObject、IViewObject等,然后在調(diào)用IClassFactory (類廠)的CreateInstance (創(chuàng)建函數(shù))時,將所創(chuàng)建的代理對象prox返回給頁面進程的IUnknown指針,由此代理對象創(chuàng)建完成。
[0083]在實際中,在創(chuàng)建插件對象的同時,可以從瀏覽器側(cè)的頁面進程中獲取所述第一插件對象的參數(shù)信息,從而知道具體需要創(chuàng)建的插件。在本發(fā)明實施例的一種優(yōu)選示例中,所述第一插件對象的參數(shù)信息可以包括第一插件對象的標識以及第一文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,可以包括文件名,文件大小和文件哈希值。例如,當?shù)谝徊寮ο鬄榘俣扔耙?BaiduPlayer)插件時,其參數(shù)信息可以為:
[0084]〈object classid="clsid:02E2D748-67F8-48B4-8AB4_0A085374BB99〃
[0085]width="500"height="400"id="BaiduPlayer"name="BaiduPlayer">
[0086]<PARAM NAME=,URL,VALUE=,
[0087]bdhd://216615163 | 5E5F4843ED84AEA1812335413084E718 | 宮鎖心玉
[0088]02.rmvb' >
[0089]<PARAM NAME=’ Autoplay’ VALUE=’ I’ >
[0090]〈/object〉
[0091]其中,object為HTML語言中對COM組件的統(tǒng)一使用方式;classid為HTML語言中對WEB插件的調(diào)用語句;clsid為BaiduPlayer插件類型ID值;width/height為在網(wǎng)頁中顯示的該插件寬與高度;id/name/為BaiduPlayer插件的標識;URL為播放文件地址(即第一文件的URL),該URL值格式為bdhd://文件大小I文件hash值|文件名(bdhd為BaiduPlayer生成URL地址的協(xié)議);AutoPlay為是否自動播放,O:不自動播放1:自動播放,默認是不自動播放。
[0092]步驟102,將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0093]步驟103,接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0094]在本發(fā)明實施例中,當瀏覽器側(cè)的頁面進程加載到網(wǎng)頁中的ActiveX插件時,可以將其替換為瀏覽器側(cè)內(nèi)置的ActiveX插件(第二插件對象),使得瀏覽器側(cè)內(nèi)置的ActiveX插件能夠?qū)Ξ斍绊撁嬷衅渲С值奈募袷降木W(wǎng)絡(luò)元素的接管和打開,避免用戶下載和安裝網(wǎng)頁中的ActiveX插件。
[0095]具體而言,瀏覽器側(cè)將所述第一插件對象的標識以及第一文件的URL等信息上傳到服務(wù)器側(cè),由服務(wù)器側(cè)進行判斷是否可以進行插件的替換操作。在具體實現(xiàn)中,服務(wù)器側(cè)的數(shù)據(jù)資源庫中保存有各種數(shù)據(jù)資源文件(包括文件名、文件大小和文件哈希值),服務(wù)器側(cè)可以分別將數(shù)據(jù)資源庫中的各數(shù)據(jù)資源文件按照瀏覽器側(cè)內(nèi)置的第二插件對象的協(xié)議生成各數(shù)據(jù)資源文件的URL (即第二文件的URL),并生成各數(shù)據(jù)資源文件與對應(yīng)的URL的映射關(guān)系保存在映射表中。當服務(wù)器側(cè)接收到瀏覽器側(cè)上傳的第一插件對象的標識以及第一文件的URL時,獲得該第一插件對象的第一文件的URL中的文件名、文件大小和文件哈希值的文件信息,在映射表中查找與所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值,若查找成功,則確定可以進行第二插件對象的替換,并獲得對應(yīng)的第二文件的URL (例如,與百度影音的播放地址對應(yīng)的第二文件的URL可以為:
[0096]ed2k://|file|Lucky%20Girl%20-%20Just%20My%20Luck%20French%20Dvdrip%20Xvid-Justmyluck-Songo52%20Par%20Idonkey%20ffs.avi|729925632|73CF7916F3ABD182035C82A69CCA29F9 | /),服務(wù)器側(cè)將該對應(yīng)的第二文件的URL和第二插件對象的標識(第二文件的URL和第二插件對象組成第二插件對象的參數(shù)信息)返回至瀏覽器側(cè)。
[0097]另外,當服務(wù)器側(cè)在映射表中沒有查找與到所述第一文件的URL中的文件名,文件大小和文件哈希值相同的文件名,文件大小和文件哈希值時,則確定不存在可替換的第二插件對象,服務(wù)器側(cè)返回的提示信息至瀏覽器側(cè),瀏覽器側(cè)依據(jù)該提示信息,對攔截的CoGetClassObject函數(shù)放行,從而創(chuàng)建第一插件對象,采用所述第一插件對象與代理對象進行通信,實現(xiàn)網(wǎng)頁的加載。
[0098]步驟104,依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0099]具體而言,當瀏覽器側(cè)接收到服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息后,將所述第二插件對象的參數(shù)信息替換頁面進程中的第一插件對象的參數(shù)信息,瀏覽器側(cè)再次加載頁面進程,在CoGetClassObject函數(shù)中獲得類廠接口指針后,調(diào)用類廠中的創(chuàng)建函數(shù)創(chuàng)建第二插件對象,其中,所述第二插件對象為真正實現(xiàn)插件功能的對象。
[0100]步驟105,建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0101]在本發(fā)明實施例中,可以在代理對象和第二插件對象中分別創(chuàng)建與對象關(guān)聯(lián)的通信窗口,以建立所述代理對象與所述第二插件對象的關(guān)聯(lián),使得代理對象和第二插件對象可以通過通信窗口進行通信,通過代理對象和第二插件對象的通信窗口,實現(xiàn)代理對象調(diào)用第二插件對象和/或第二插件對象調(diào)用代理對象,從而實現(xiàn)插件所要實現(xiàn)的功能。
[0102]步驟106,采用所述代理對象配置所述第二插件對象運行的腳本;
[0103]在具體實現(xiàn)中,代理對象與第二插件對象的通信包括進程間的腳本執(zhí)行過程,通過代理對象來配置第二插件對象運行的腳本。在本發(fā)明的一種優(yōu)選實施例中,所述第一插件對象的參數(shù)信息還可以包括第一功能函數(shù),所述第二插件對象運行的腳本可以包括第二插件對象的第二功能函數(shù),所述步驟106可以包括如下子步驟:
[0104]子步驟S21,在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0105]子步驟S22,采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0106]具體而言,所述代理對象可以通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。在具體實現(xiàn)中,瀏覽器側(cè)的頁面進程在加載網(wǎng)頁時,當解析到第一插件對象中腳本時,將該腳本中待執(zhí)行的方法的名稱調(diào)到代理對象的IDispatch接口中,IDispatch接口為調(diào)度接口,用于調(diào)用不支持虛函數(shù)表的語言程序中的函數(shù),IDispatch 接 口具有 GetIDsOfNames 函數(shù)和 Invoke 函數(shù),其中 GetIDsOfNames 函數(shù)提供的是利用方法的名稱返回其調(diào)度ID的方法,Invoke函數(shù)提供的是利用方法的調(diào)度ID執(zhí)行方法的指令。由于第一插件對象并沒有真正創(chuàng)建,而第二插件對象是真正的插件的對象,所以代理對象通過通信窗口調(diào)用第二插件對象的IDispatch接口,調(diào)用第二插件對象的GetIDsOfNames函數(shù)提供的方法,讓第二插件對象獲取待執(zhí)行的方法的調(diào)度ID,并根據(jù)所述調(diào)度ID獲取相應(yīng)的功能函數(shù)(第二功能函數(shù)),然后第二插件對象通過通信窗口將該調(diào)度ID和第二功能函數(shù)返回給代理對象,代理對象將所述第二功能函數(shù)替換第一功能函數(shù)(例如:第一插件對象中的Play函數(shù),在Prox對象被調(diào)用時,實際被映射到第二插件對象的對應(yīng)Play函數(shù),其名稱也可以不是play,但是功能是完全一致的),然后,按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0107]步驟107,采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
[0108]具體而言,代理對象完成第二插件對象的腳本的配置后,將該腳本反饋給頁面進程,頁面進程采用所述第二插件對象執(zhí)行Invoke (ID)的指令,從而執(zhí)行腳本中待執(zhí)行的方法,完成頁面的加載。
[0109]在本發(fā)明實施例中,可以實現(xiàn)對于網(wǎng)頁中的任一 ActiveX插件的替換操作,從而實現(xiàn)了瀏覽器側(cè)中所有的數(shù)據(jù)資源都可以找到一個合適的或者統(tǒng)一的ActiveX插件進行加載,而不需要用戶進行手動的安裝,大大地提高了瀏覽器側(cè)對于網(wǎng)頁中數(shù)據(jù)資源加載的效率。
[0110]參照圖2,示出了根據(jù)本發(fā)明一個實施例的一種加載插件的方法實施例二的步驟流程圖,從實施例從服務(wù)器側(cè)進行說明,具體可以包括以下步驟:
[0111]步驟201,接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0112]步驟202,依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè);
[0113]其中,所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0114]在本發(fā)明的一種優(yōu)選實施例中,所述第一插件對象的參數(shù)信息可以包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息可以包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,可以包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,可以包括文件名,文件大小和文件哈希值;所述步驟202可以包括如下子步驟:
[0115]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;
[0116]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0117]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。[0118]另外,當在服務(wù)器側(cè)預(yù)置的映射表中不存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL時,則判定不存在可替換的第二插件對象,此時,服務(wù)器側(cè)返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0119]對于圖2的方法實施例而言,由于其與圖1的方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見圖1的方法實施例的部分說明即可
[0120]參照圖3,示出了根據(jù)本發(fā)明一個實施例的一種瀏覽器實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
[0121]代理對象創(chuàng)建模塊301,適于在瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0122]其中,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到cogetclassobject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0123]第一插件對象的參數(shù)信息發(fā)送模塊302,適于將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0124]第二插件對象的參數(shù)信息接收模塊303,適于接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0125]第二插件對象創(chuàng)建模塊304,適于依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0126]關(guān)聯(lián)建立模塊305,適于建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0127]腳本配置模塊306,適于采用所述代理對象配置所述第二插件對象運行的腳本;
[0128]第一頁面加載模塊307,適于采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
[0129]在本發(fā)明的一種優(yōu)選實施例中,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
[0130]在本發(fā)明實施例中,當不存在可替換的第二插件對象時,所述瀏覽器側(cè)還可以包括:
[0131]提示信息接收模塊,適于接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成;
[0132]第一插件對象創(chuàng)建模塊,適于依據(jù)所述提示信息,創(chuàng)建第一插件對象;
[0133]第二頁面加載模塊,適于采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0134]在本發(fā)明的一種優(yōu)選實施例中,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述腳本配置模塊還適于:[0135]在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0136]其中,所述代理對象通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。
[0137]采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0138]對于瀏覽器實施例而言,由于其與上述方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
[0139]參照圖4,示出了根據(jù)本發(fā)明一個實施例的一種服務(wù)器實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
[0140]第一插件對象的參數(shù)信息接收模塊401,適于接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0141]第二插件對象的參數(shù)信息返回模塊402,適于依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0142]在本發(fā)明的一種優(yōu)選實施例中,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;
[0143]所述第二插件對象的參數(shù)信息返回模塊還適于:
[0144]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;
[0145]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0146]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。
[0147]在本發(fā)明實施例中,當不存在可替換的第二插件對象時,所述服務(wù)器側(cè)還可以包括:
[0148]提示信息返回模塊,適于在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時,返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0149]對于服務(wù)器實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
[0150]在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0151]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0152]類似地,應(yīng)當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0153]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0154]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0155]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP )來實現(xiàn)根據(jù)本發(fā)明實施例的進行加載插件的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0156]應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。[0157]本發(fā)明公開了 Al、一種加載插件的方法,包括:
[0158]當瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0159]將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0160]接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0161]依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0162]建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0163]采用所述代理對象配置所述第二插件對象運行的腳本;
[0164]采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
[0165]A2、如Al所述的方法,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
[0166]A3、如Al或A2所述的方法,還包括:
[0167]瀏覽器側(cè)接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成;
[0168]依據(jù)所述提示信息,創(chuàng)建第一插件對象;
[0169]采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0170]A4、如A2所述的方法,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述采用所述代理對象配置所述第二插件對象運行的腳本的步驟包括:
[0171]在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0172]采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0173]A5、如A4所述的方法,所述代理對象通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。
[0174]A6、如Al所述的方法,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到cogetclassobject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0175]本發(fā)明還公開了 B7、一種加載插件的方法,包括:
[0176]接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0177]依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0178]Β8^Π B7所述的方法,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;
[0179]所述依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè)的步驟,具體包括:
[0180]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;
[0181]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0182]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。
[0183]B9、如B7或B8所述的方法,還包括:
[0184]在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時,返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0185]本發(fā)明還公開了 C10、 一種瀏覽器,包括:
[0186]代理對象創(chuàng)建模塊,適于在瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息;
[0187]第一插件對象的參數(shù)信息發(fā)送模塊,適于將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè);
[0188]第二插件對象的參數(shù)信息接收模塊,適于接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得;
[0189]第二插件對象創(chuàng)建模塊,適于依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;
[0190]關(guān)聯(lián)建立模塊,適于建立所述代理對象與所述第二插件對象的關(guān)聯(lián);
[0191]腳本配置模塊,適于采用所述代理對象配置所述第二插件對象運行的腳本;
[0192]第一頁面加載模塊,適于采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
[0193]C11、如ClO所述的瀏覽器,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。[0194]C12、如ClO或Cll所述的瀏覽器,還包括:
[0195]提示信息接收模塊,適于接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成;
[0196]第一插件對象創(chuàng)建模塊,適于依據(jù)所述提示信息,創(chuàng)建第一插件對象;
[0197]第二頁面加載模塊,適于采用所述第一插件對象進行所述網(wǎng)頁的加載。
[0198]C13、如Cll所述的瀏覽器,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述腳本配置模塊還適于:
[0199]在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù);
[0200]采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
[0201]C14、如C13所述的瀏覽器,所述代理對象通過調(diào)度接口 IDispatch接口將所述第一功能函數(shù)替換為第二插件對象中對應(yīng)的第二功能函數(shù)。
[0202]C15、如ClO所述的瀏覽器,在瀏覽器側(cè)加載網(wǎng)頁的過程中鉤掛hook到cogetclassobject函數(shù)時,即攔截到第一插件對象的創(chuàng)建需求。
[0203]本發(fā)明還公開了 D16、一種服務(wù)器,包括:
[0204]第一插件對象的參數(shù)信息接收模塊,適于接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息;
[0205]第二插件對象的參數(shù)信息返回模塊,適于依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
[0206]D17、如D16所述的服務(wù)器,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;
[0207]所述第二插件對象的參數(shù)信息返回模塊還適于:
[0208]依據(jù)所述第一文件的URL,判斷在服務(wù)器側(cè)預(yù)置的映射表中是否存在與所述文件名,文件大小和文件哈希值相同的第二文件的URL ;
[0209]若是,則依據(jù)所述第二文件的URL獲取第二插件對象的標識;
[0210]將所述第二插件對象的標識以及第二文件的URL返回瀏覽器側(cè)。
[0211]D18、如D16或D17所述的服務(wù)器,還包括:
[0212]提示信息返回模塊,適于在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時,返回提示信息,由所述瀏覽器側(cè)依據(jù)所述提示信息,創(chuàng)建第一插件對象,并采用所述第一插件對象進行所述網(wǎng)頁的加載。
【權(quán)利要求】
1.一種加載插件的方法,包括: 當瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息; 將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè); 接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得; 依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象; 建立所述代理對象與所述第二插件對象的關(guān)聯(lián); 采用所述代理對象配置所述第二插件對象運行的腳本; 采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
2.如權(quán)利要求1所述的方法,其特征在于,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
3.如權(quán)利要求1或2所述的方法,其特征在于,還包括: 瀏覽器側(cè)接收服務(wù)器側(cè)返回的提示信`息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成; 依據(jù)所述提示信息,創(chuàng)建第一插件對象; 采用所述第一插件對象進行所述網(wǎng)頁的加載。
4.如權(quán)利要求2所述的方法,其特征在于,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述采用所述代理對象配置所述第二插件對象運行的腳本的步驟包括: 在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù); 采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
5.一種加載插件的方法,包括: 接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息; 依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
6.一種瀏覽器,包括:代理對象創(chuàng)建模塊,適于在瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時,創(chuàng)建代理對象,并獲取所述第一插件對象的參數(shù)信息; 第一插件對象的參數(shù)信息發(fā)送模塊,適于將所述第一插件對象的參數(shù)信息發(fā)送至服務(wù)器側(cè); 第二插件對象的參數(shù)信息接收模塊,適于接收所述服務(wù)器側(cè)返回的第二插件對象的參數(shù)信息,所述第二插件對象的參數(shù)信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時提取獲得; 第二插件對象創(chuàng)建模塊,適于依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象; 關(guān)聯(lián)建立模塊,適于建立所述代理對象與所述第二插件對象的關(guān)聯(lián); 腳本配置模塊,適于采用所述代理對象配置所述第二插件對象運行的腳本; 第一頁面加載模塊,適于采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載。
7.如權(quán)利要求6所述的瀏覽器,其特征在于,所述第一插件對象的參數(shù)信息包括第一插件對象的標識以及第一文件的URL,所述第二插件對象的參數(shù)信息包括第二插件對象的標識以及第二文件的URL,所述第一文件的URL為按照第一插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件 哈希值;所述第二文件的URL為按照第二插件對象的協(xié)議生成的URL,包括文件名,文件大小和文件哈希值;當存在可替換的第二插件對象時,所述第二文件的URL中的文件名,文件大小和文件哈希值,與所述第一文件的URL中的文件名,文件大小和文件哈希值相同。
8.如權(quán)利要求6或7所述的瀏覽器,其特征在于,還包括: 提示信息接收模塊,適于接收服務(wù)器側(cè)返回的提示信息,所述提示信息通過服務(wù)器側(cè)在依據(jù)所述第一插件對象的參數(shù)信息判斷不存在可替換的第二插件對象時生成; 第一插件對象創(chuàng)建模塊,適于依據(jù)所述提不信息,創(chuàng)建第一插件對象; 第二頁面加載模塊,適于采用所述第一插件對象進行所述網(wǎng)頁的加載。
9.如權(quán)利要求7所述的瀏覽器,其特征在于,所述第一插件對象的參數(shù)信息還包括第一功能函數(shù),所述第二插件對象運行的腳本包括第二插件對象的第二功能函數(shù),所述腳本配置模塊還適于: 在調(diào)用所述第一功能函數(shù)時,采用所述代理對象將所述第一功能函數(shù)替換為對應(yīng)的第二功能函數(shù); 采用所述代理對象按照所述第二功能函數(shù)以及所述第二文件的URL配置所述第二插件對象運行的腳本。
10.一種服務(wù)器,包括: 第一插件對象的參數(shù)信息接收模塊,適于接收瀏覽器側(cè)發(fā)送的第一插件對象的參數(shù)信息; 第二插件對象的參數(shù)信息返回模塊,適于依據(jù)所述第一插件對象的參數(shù)信息判斷存在可替換的第二插件對象時,提取所述第二插件對象的參數(shù)信息返回瀏覽器側(cè),由所述瀏覽器側(cè)依據(jù)所述第二插件對象的參數(shù)信息創(chuàng)建第二插件對象;建立代理對象與所述第二插件對象的關(guān)聯(lián);采用所述代理對象配置所述第二插件對象運行的腳本;采用所述第二插件對象根據(jù)所述腳本進行所述網(wǎng)頁的加載,其中,所述代理對象為瀏覽器側(cè)在加載網(wǎng)頁的過程中攔截到第一插件對象的創(chuàng)建需求時創(chuàng)建。
【文檔編號】G06F9/445GK103577227SQ201310513333
【公開日】2014年2月12日 申請日期:2013年10月25日 優(yōu)先權(quán)日:2013年10月25日
【發(fā)明者】賀躍松, 李錦偉, 任寰 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
安新县| 五原县| 翁牛特旗| 镇原县| 福泉市| 岐山县| 连平县| 宜昌市| 蒙阴县| 新民市| 麻栗坡县| 临汾市| 金门县| 乐亭县| 安远县| 隆德县| 玉山县| 苍梧县| 瓮安县| 定西市| 金阳县| 通州市| 铜山县| 乐至县| 定兴县| 庆元县| 怀安县| 台湾省| 武强县| 浑源县| 泸水县| 辽阳县| 海淀区| 迁安市| 淳化县| 潮安县| 衡水市| 英德市| 福泉市| 宁都县| 榕江县|