專利名稱:進(jìn)程間的腳本執(zhí)行方法、系統(tǒng)及瀏覽器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種進(jìn)程間的腳本執(zhí)行方法、系統(tǒng)及瀏覽器。
背景技術(shù):
IPC (Inter-Process Communication,進(jìn)程間通信)是指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法。進(jìn)程是計(jì)算機(jī)系統(tǒng)分配資源的最小單位。每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的。為了能使不同的進(jìn)程互相訪問資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信。不同的進(jìn)程可以運(yùn)行在同一計(jì)算機(jī)上或通過網(wǎng)絡(luò)連接的不同計(jì)算機(jī)上。一般來(lái)說(shuō),在以下情況下需要實(shí)現(xiàn)進(jìn)程間通信(I)數(shù)據(jù)傳輸一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程,發(fā)送的數(shù)據(jù)量在一個(gè)字節(jié)到幾兆字節(jié)之間。(2)共享數(shù)據(jù)多個(gè)進(jìn)程想要操作共享數(shù)據(jù),一個(gè)進(jìn)程對(duì)共享數(shù)據(jù)的修改,別的進(jìn)程應(yīng)該立刻看到。(3)通知事件一個(gè)進(jìn)程需要向另一個(gè)或一組進(jìn)程發(fā)送消息,通知它(它們)發(fā)生了某種事件(如進(jìn)程終止時(shí)要通知父進(jìn)程)。(4)資源共享多個(gè)進(jìn)程之間共享同樣的資源。為了作到這一點(diǎn),需要內(nèi)核提供鎖和同步機(jī)制。(5)進(jìn)程控制有些進(jìn)程希望完全控制另一個(gè)進(jìn)程的執(zhí)行(如Debug進(jìn)程),此時(shí)控制進(jìn)程希望能夠攔截另一個(gè)進(jìn)程的所有陷入和異常,并能夠及時(shí)知道它的狀態(tài)改變。但是,現(xiàn)有技術(shù)還未提供關(guān)于進(jìn)程間腳本執(zhí)行的方案,利用現(xiàn)有的方法還不能實(shí)現(xiàn)進(jìn)程間腳本的交互執(zhí)行。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的進(jìn)程間的腳本執(zhí)行系統(tǒng)、瀏覽器和相應(yīng)的進(jìn)程間的腳本執(zhí)行方法。根據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程間的腳本執(zhí)行方法,該方法適用于由運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象執(zhí)行運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過預(yù)先建立的通信窗口進(jìn)行通信,所述方法包括所述活動(dòng)對(duì)象通過通信窗口將腳本發(fā)送給所述代理對(duì)象;所述代理對(duì)象查詢所述頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法;所述代理對(duì)象根據(jù)所述腳本執(zhí)行方法執(zhí)行所述腳本。根據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程間的腳本執(zhí)行系統(tǒng),所述系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象以及分別在所述代理對(duì)象和活動(dòng)對(duì)象中創(chuàng)建的一對(duì)通信窗口 ;該系統(tǒng)適用于由代理對(duì)象執(zhí)行活動(dòng)對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過所述一對(duì)通信窗口進(jìn)行通信;所述活動(dòng)對(duì)象包括發(fā)送模塊,適于通過通信窗口將腳本發(fā)送給所述代理對(duì)象;所述代理對(duì)象包括查詢模塊,適于查詢所述頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法;執(zhí)行模塊,適于根據(jù)所述腳本執(zhí)行方法執(zhí)行所述腳本。根據(jù)本發(fā)明的一個(gè)方面,提供了一種瀏覽器,包括上述進(jìn)程間的腳本執(zhí)行系統(tǒng)。根據(jù)本發(fā)明的另一方面,提供了另一種進(jìn)程間的腳本執(zhí)行方法,該方法適用于由運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象執(zhí)行運(yùn)行于頁(yè)面進(jìn)程中代理對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過預(yù)先建立的通信窗口進(jìn)行通信,所述方法包括所述代理對(duì)象通過通信窗口將腳本發(fā)送給所述活動(dòng)對(duì)象;所述代理對(duì)象通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí);所述代理對(duì)象攔截頁(yè)面進(jìn)程中執(zhí)行所述腳本中待執(zhí)行方法的指令,將所述指令發(fā)送給所述活動(dòng)對(duì)象;所述活動(dòng)對(duì)象通過執(zhí)行所述指令,執(zhí)行所述腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給代理對(duì)象。根據(jù)本發(fā)明的另一方面,提供了另一種進(jìn)程間的腳本執(zhí)行系統(tǒng),所述系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象以及分別在所述代理對(duì)象和活動(dòng)對(duì)象上創(chuàng)建的一對(duì)通信窗口 ;該系統(tǒng)適用于由活動(dòng)對(duì)象執(zhí)行頁(yè)面進(jìn)程中的腳本,所述活動(dòng)對(duì)象和代理對(duì)象通過所述一對(duì)通信窗口進(jìn)行通信;所述代理對(duì)象包括發(fā)送模塊,適于通過通信窗口將腳本發(fā)送給所述活動(dòng)對(duì)象;調(diào)度標(biāo)識(shí)獲取模塊,適于通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí);攔截模塊,適于攔截頁(yè)面進(jìn)程中執(zhí)行所述腳本中待執(zhí)行方法的指令,將所述指令發(fā)送給所述活動(dòng)對(duì)象;所述活動(dòng)對(duì)象包括接收模塊,適于接收所述代理對(duì)象中的發(fā)送模塊發(fā)送的腳本以及攔截模塊發(fā)送的指令;執(zhí)行模塊,適于通過執(zhí)行所述指令,執(zhí)行所述腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給代理對(duì)象。根據(jù)本發(fā)明的另一個(gè)方面,提供了另一種瀏覽器,包括上述另一種進(jìn)程間的腳本執(zhí)打系統(tǒng)。根據(jù)本發(fā)明的一個(gè)方面提供的方案,在活動(dòng)對(duì)象將腳本發(fā)送給代理對(duì)象之后,代理對(duì)象查詢頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行的方法,進(jìn)而根據(jù)腳本執(zhí)行的方法執(zhí)行活動(dòng)對(duì)象發(fā)送過來(lái)的腳本,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象對(duì)運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面的控制。根據(jù)本發(fā)明的另一個(gè)方面提供的方案,在代理對(duì)象將腳本發(fā)送給活動(dòng)對(duì)象之后,代理對(duì)象調(diào)用活動(dòng)對(duì)象的調(diào)度接口獲取腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí);在代理對(duì)象將調(diào)度標(biāo)識(shí)反饋給頁(yè)面后,代理對(duì)象攔截頁(yè)面進(jìn)程執(zhí)行腳本中待執(zhí)行方法的指令,將指令發(fā)送給活動(dòng)對(duì)象,由活動(dòng)對(duì)象執(zhí)行該指令,并將執(zhí)行指令后獲得的執(zhí)行結(jié)果返回給代理對(duì)象,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面對(duì)運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象的控制。上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖1示出了本發(fā)明中Flash插件代理對(duì)象和Flash插件活動(dòng)對(duì)象的創(chuàng)建過程的示意圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行方法的流程圖;圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行方法的流程圖;圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行系統(tǒng)的結(jié)構(gòu)框圖;圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。本發(fā)明提供的進(jìn)程間的腳本執(zhí)行方法是指頁(yè)面進(jìn)程與獨(dú)立進(jìn)程之間的腳本執(zhí)行方法。其中頁(yè)面進(jìn)程運(yùn)行Web頁(yè)面的進(jìn)程,獨(dú)立進(jìn)程是獨(dú)立于頁(yè)面進(jìn)程的另一進(jìn)程。在頁(yè)面有ActiveX插件的情況下,頁(yè)面進(jìn)程運(yùn)行ActiveX插件代理對(duì)象,獨(dú)立進(jìn)程運(yùn)行ActiveX插件活動(dòng)對(duì)象,該ActiveX插件活動(dòng)對(duì)象是真正的ActiveX插件的對(duì)象。在以下實(shí)施例中,以ActiveX插件為Flash插件為例進(jìn)行說(shuō)明,但本發(fā)明不僅限于此。在介紹頁(yè)面進(jìn)程和獨(dú)立進(jìn)程之間的腳本執(zhí)行方法之前,首先介紹Flash插件代理對(duì)象和Flash插件活動(dòng)對(duì)象的創(chuàng)建過程。圖1示出了本發(fā)明中Flash插件代理對(duì)象和Flash插件活動(dòng)對(duì)象的創(chuàng)建過程的示意圖。如圖1所示,頁(yè)面進(jìn)程中運(yùn)行有Web頁(yè)面和Flash插件代理對(duì)象,獨(dú)立進(jìn)程中運(yùn)行有空頁(yè)面和Flash插件活動(dòng)對(duì)象。其中,運(yùn)行于頁(yè)面進(jìn)程中的Flash代理對(duì)象是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建Flash活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的Flash活動(dòng)對(duì)象而創(chuàng)建的。具體來(lái)說(shuō),在頁(yè)面中有Flash的情況下,當(dāng)瀏覽器創(chuàng)建Flash插件時(shí),會(huì)根據(jù)Flash插件CLSID (類標(biāo)識(shí),可通過CLSIDFromProID獲得)或ProgID(組件的字符串標(biāo)識(shí)符)查詢注冊(cè)表,查看系統(tǒng)是否已安裝該Flash插件,若安裝則繼續(xù)創(chuàng)建過程。在頁(yè)面進(jìn)程繼續(xù)創(chuàng)建Flash插件時(shí),攔截CoGetClassOb ject,創(chuàng)建Flash插件代理對(duì)象,該Flash插件代理對(duì)象包括一系列接口,包括IUnknown指針將會(huì)調(diào)用的很多標(biāo)準(zhǔn)接口,例如IOleObject、IViewObject等。然后在調(diào)用IClassFactory的CreateInstance時(shí),將所創(chuàng)建的Flash插件代理對(duì)象返回給頁(yè)面進(jìn)程的IUnknown指針。由此Flash插件代理對(duì)象創(chuàng)建完成。運(yùn)行于獨(dú)立進(jìn)程中的Flash插件活動(dòng)對(duì)象是在頁(yè)面進(jìn)程激活Flash插件代理對(duì)象時(shí),在獨(dú)立于頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的。具體來(lái)說(shuō),在頁(yè)面進(jìn)程激活Flash插件代理對(duì)象時(shí),提取出該Flash插件的屬性、URL、大小等相關(guān)信息,然后創(chuàng)建一個(gè)獨(dú)立進(jìn)程。首先,倉(cāng)Il建一個(gè)文件(document),即空頁(yè)面,在其中插入一個(gè)對(duì)象(object),該獨(dú)立進(jìn)程調(diào)用CoGetClassObject,攔截該 CoGetClassObject,創(chuàng)建一個(gè) Flash 插件活動(dòng)對(duì)象。該 Flash插件活動(dòng)對(duì)象包括一系列的接口,包括IUnknown指針將會(huì)調(diào)用的很多標(biāo)準(zhǔn)接口,例如IOleObject、IViewObject 等。然后在調(diào)用 IClassFactory 的 CreateInstance 時(shí),將所創(chuàng)建的Flash插件活動(dòng)對(duì)象返回給獨(dú)立進(jìn)程的IUnknown指針。由此Flash插件活動(dòng)對(duì)象創(chuàng)建完成。接著,在Flash插件代理對(duì)象和Flash插件活動(dòng)對(duì)象中分別創(chuàng)建與插件對(duì)象關(guān)聯(lián)的通信窗口,用于使Flash插件代理對(duì)象和Flash插件活動(dòng)對(duì)象進(jìn)行通信。通過這兩個(gè)通信窗口,兩個(gè)對(duì)象可以針對(duì)Flash的大小、焦點(diǎn)、刷新、腳本以及其它信息進(jìn)行交互。進(jìn)一步的,如果Web頁(yè)面中有嵌套結(jié)構(gòu),即頁(yè)面進(jìn)程運(yùn)行有多個(gè)父頁(yè)面和多個(gè)子頁(yè)面。每當(dāng)頁(yè)面進(jìn)程創(chuàng)建一個(gè)子頁(yè)面及其代理對(duì)象時(shí),將子頁(yè)面的代理對(duì)象ID (也可包括其URL)和該子頁(yè)面的父頁(yè)面的代理對(duì)象ID(也可包括其URL)發(fā)送給獨(dú)立進(jìn)程,在獨(dú)立進(jìn)程中按照對(duì)應(yīng)的層次結(jié)構(gòu)創(chuàng)建活動(dòng)對(duì)象。在這種情況下,運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象為多個(gè),代理對(duì)象和活動(dòng)對(duì)象一一對(duì)應(yīng),每個(gè)代理對(duì)象的通信窗口和與該代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)象的通信窗口具有對(duì)應(yīng)的屬性,通過這兩個(gè)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和與其對(duì)應(yīng)的代理對(duì)象的通信。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行方法200的流程圖。該方法適用于由運(yùn)行于頁(yè)面進(jìn)程中的Flash插件代理對(duì)象執(zhí)行運(yùn)行于獨(dú)立進(jìn)程中的Flash插件活動(dòng)對(duì)象的腳本,即該方法是運(yùn)行于獨(dú)立進(jìn)程中的Flash插件活動(dòng)對(duì)象控制頁(yè)面進(jìn)程中頁(yè)面的方法。如圖2所示,方法200始于步驟S201,其中Flash插件活動(dòng)對(duì)象通過通信窗口將腳本發(fā)送給Flash插件代理對(duì)象。以用戶點(diǎn)擊Flash上創(chuàng)建的按鈕,觸發(fā)頁(yè)面變黑為例,當(dāng)用戶點(diǎn)擊Flash上的按鈕時(shí),F(xiàn)lash插件活動(dòng)對(duì)象獲取按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本,將該腳本通過通信窗口發(fā)送給Flash插件代理對(duì)象。隨后,方法200進(jìn)入步驟S202,其中Flash插件代理對(duì)象查詢頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法。在Flash插件代理對(duì)象接收到上述按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本之后,查詢和獲取頁(yè)面進(jìn)程中的IHTMLWindow接口,IHTMLffindow接口為與腳本執(zhí)行有關(guān)的接口,該IHTMLWindow接口中的ExecScript為用于執(zhí)行腳本的函數(shù),即ExecScript函數(shù)提供腳本執(zhí)行方法。隨后,方法200進(jìn)入步驟S203,其中Flash插件代理對(duì)象根據(jù)腳本執(zhí)行方法執(zhí)行該腳本。Flash插件代理對(duì)象根據(jù)ExecScript函數(shù)提供的腳本執(zhí)行方法執(zhí)行上述按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本,使頁(yè)面變黑。根據(jù)本實(shí)施例提供的進(jìn)程間的腳本執(zhí)行方法,在活動(dòng)對(duì)象將腳本發(fā)送給代理對(duì)象之后,代理對(duì)象查詢頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行的方法,進(jìn)而根據(jù)腳本執(zhí)行的方法執(zhí)行活動(dòng)對(duì)象發(fā)送過來(lái)的腳本,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象對(duì)運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面的控制。進(jìn)一步的,在本方法中,通過在頁(yè)面進(jìn)程中運(yùn)行代理對(duì)象,而在獨(dú)立進(jìn)程中運(yùn)行活動(dòng)對(duì)象,使得真正的ActiveX插件與頁(yè)面進(jìn)程分離,從而使ActiveX插件出現(xiàn)問題時(shí)不會(huì)影響頁(yè)面進(jìn)程,提高了瀏覽器的穩(wěn)定性,尤其是當(dāng)ActiveX插件出現(xiàn)病毒等安全性問題時(shí),也不會(huì)對(duì)頁(yè)面進(jìn)程產(chǎn)生影響,提高了瀏覽器的安全性;同時(shí),頁(yè)面進(jìn)程出現(xiàn)問題不會(huì)影響ActiveX插件的正常運(yùn)行,提高了插件的穩(wěn)定性。圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行方法300的流程圖。該方法適用于由運(yùn)行于獨(dú)立進(jìn)程中的Flash插件活動(dòng)對(duì)象執(zhí)行運(yùn)行于頁(yè)面進(jìn)程中的Flash插件代理對(duì)象的腳本,即該方法是運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面控制獨(dú)立進(jìn)程中Flash插件活動(dòng)對(duì)象的方法。如果頁(yè)面想要獲取Flash的信息(如版本號(hào)、路徑、URL等屬性)或者頁(yè)面想要操作Flash (如頁(yè)面想要改變Flash窗口的大小),都可以通過該方法來(lái)實(shí)現(xiàn)。如圖3所示,方法300始于步驟S30l,F(xiàn)lash插件代理對(duì)象通過通信窗口將腳本發(fā)送給Flash插件活動(dòng)對(duì)象。以獲取Flash版本號(hào)為例,由于頁(yè)面進(jìn)程中的Flash插件代理對(duì)象并不是真正的Flash插件,它并不知道Flash版本號(hào),因而Flash插件代理對(duì)象不能直接向頁(yè)面反饋Flash版本號(hào)。在獨(dú)立進(jìn)程創(chuàng)建完成Flash插件活動(dòng)對(duì)象之后,會(huì)向頁(yè)面通知Flash插件活動(dòng)對(duì)象的變量,頁(yè)面開發(fā)者根據(jù)該變量在頁(yè)面中寫入獲取Flash版本號(hào)的腳本,該腳本中待執(zhí)行的方法就是獲取Flash版本號(hào)。Flash插件代理對(duì)象通過通信窗口將獲取Flash版本號(hào)的腳本發(fā)送給Flash插件活動(dòng)對(duì)象。隨后,方法300進(jìn)入步驟S302,其中Flash插件代理對(duì)象通過調(diào)用Flash插件活動(dòng)對(duì)象的調(diào)度接口,讓Flash插件活動(dòng)對(duì)象執(zhí)行獲取腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)的方法,在Flash插件活動(dòng)對(duì)象獲取該調(diào)度標(biāo)識(shí)后通過通信窗口將調(diào)度標(biāo)識(shí)返回給Flash插件代理對(duì)象。具體來(lái)說(shuō),首先頁(yè)面解析腳本,將該腳本中待執(zhí)行的方法的名稱調(diào)到Flash插件代理對(duì)象的IDispatch接口中,IDispatch接口為調(diào)度接口,用于調(diào)用不支持虛函數(shù)表的語(yǔ)言程序中的函數(shù),IDispatch接口具有GetIDsOfNames函數(shù)和Invoke函數(shù),其中GetIDsOfNames函數(shù)提供的是利用方法的名稱返回其調(diào)度ID的方法,Invoke函數(shù)提供的是利用方法的調(diào)度ID執(zhí)行方法的指令。由于Flash插件代理對(duì)象無(wú)法獲知腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)(ID),所以Flash插件代理對(duì)象通過通信窗口調(diào)用Flash插件活動(dòng)對(duì)象的IDispatch接口。而Flash插件活動(dòng)對(duì)象是真正的Flash插件的對(duì)象,所以通過調(diào)用Flash插件活動(dòng)對(duì)象的GetIDsOfNames函數(shù)提供的方法,可以讓Flash插件活動(dòng)對(duì)象獲取待執(zhí)行的方法的調(diào)度ID,然后Flash插件活動(dòng)對(duì)象通過通信窗口將該調(diào)度ID返回給Flash插件代理對(duì)象。隨后,方法300進(jìn)入步驟S303,其中Flash插件代理對(duì)象攔截頁(yè)面進(jìn)程中執(zhí)行腳本中待執(zhí)行方法的指令,將該指令發(fā)送給Flash插件活動(dòng)對(duì)象。具體來(lái)說(shuō),在Flash插件代理對(duì)象獲得待執(zhí)行的方法的調(diào)度ID之后,將該調(diào)度ID反饋給頁(yè)面,按照常規(guī)流程頁(yè)面進(jìn)程下一步就會(huì)執(zhí)行Invoke(ID)的指令,本方法在這里攔截頁(yè)面進(jìn)程的Invoke (ID)的指令,將Invoke (ID)的指令發(fā)送給Flash插件活動(dòng)對(duì)象。隨后,方法300進(jìn)入步驟S304,其中Flash插件活動(dòng)對(duì)象通過執(zhí)行指令,執(zhí)行腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給Flash插件代理對(duì)象。具體來(lái)說(shuō),F(xiàn)lash插件活動(dòng)對(duì)象執(zhí)行Invoke (ID)的指令,從而執(zhí)行腳本中待執(zhí)行的方法,獲取Flash版本號(hào),并將Flash版本號(hào)返回給Flash插件代理對(duì)象,然后Flash插件代理對(duì)象會(huì)將Flash版本號(hào)反饋給頁(yè)面。根據(jù)本實(shí)施例提供的進(jìn)程間的腳本執(zhí)行方法,在代理對(duì)象將腳本發(fā)送給活動(dòng)對(duì)象之后,代理對(duì)象調(diào)用活動(dòng)對(duì)象的調(diào)度接口獲取腳本中待執(zhí)行方法的調(diào)度ID ;在代理對(duì)象將調(diào)度ID反饋給頁(yè)面后,代理對(duì)象攔截頁(yè)面進(jìn)程執(zhí)行腳本中待執(zhí)行方法的指令,將指令發(fā)送給活動(dòng)對(duì)象,由活動(dòng)對(duì)象執(zhí)行該指令,并將執(zhí)行指令后獲得的執(zhí)行結(jié)果返回給代理對(duì)象,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面對(duì)運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象的控制。進(jìn)一步的,在本方法中,通過在頁(yè)面進(jìn)程中運(yùn)行代理對(duì)象,而在獨(dú)立進(jìn)程中運(yùn)行活動(dòng)對(duì)象,使得真正的ActiveX插件與頁(yè)面進(jìn)程分離,從而使ActiveX插件出現(xiàn)問題時(shí)不會(huì)影響頁(yè)面進(jìn)程,提高了瀏覽器的穩(wěn)定性,尤其是當(dāng)ActiveX插件出現(xiàn)病毒等安全性問題時(shí),也不會(huì)對(duì)頁(yè)面進(jìn)程產(chǎn)生影響,提高了瀏覽器的安全性;同時(shí),頁(yè)面進(jìn)程出現(xiàn)問題不會(huì)影響ActiveX插件的正常運(yùn)行,提高了插件的穩(wěn)定性。圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行系統(tǒng)的結(jié)構(gòu)框圖。如圖4所示,該系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象410、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象420以及分別在代理對(duì)象410和活動(dòng)對(duì)象420中創(chuàng)建的一對(duì)通信窗口 430。該系統(tǒng)適用于由代理對(duì)象410執(zhí)行活動(dòng)對(duì)象420的腳本,代理對(duì)象410和活動(dòng)對(duì)象420通過一對(duì)通信窗口 430進(jìn)行通信?;顒?dòng)對(duì)象420包括發(fā)送模塊421,適于通過通信窗口 430將腳本發(fā)送給代理對(duì)象410。以用戶點(diǎn)擊Flash上創(chuàng)建的按鈕,觸發(fā)頁(yè)面變黑為例,當(dāng)用戶點(diǎn)擊Flash上的按鈕時(shí),活動(dòng)對(duì)象420獲取按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本,由發(fā)送模塊421將該腳本通過通信窗口 430發(fā)送給代理對(duì)象410。代理對(duì)象410包括查詢模塊411和執(zhí)行模塊412。查詢模塊411適于查詢頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法;執(zhí)行模塊412適于根據(jù)腳本執(zhí)行方法執(zhí)行腳本。在代理對(duì)象410接收到上述按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本之后,查詢模塊411查詢和獲取頁(yè)面進(jìn)程中的IHTMLWindow接口,IHTMLWindow接口為與腳本執(zhí)行有關(guān)的接口,該IHTMLWindow接口中的ExecScript為用于執(zhí)行腳本的函數(shù),即ExecScript函數(shù)提供腳本執(zhí)行方法。執(zhí)行模塊412根據(jù)ExecScript函數(shù)提供的腳本執(zhí)行方法執(zhí)行上述按鈕點(diǎn)擊操作對(duì)應(yīng)的腳本,使頁(yè)面變黑。上述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象410是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的;運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象420是在頁(yè)面進(jìn)程激活代理對(duì)象410時(shí),在獨(dú)立于頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的;在活動(dòng)對(duì)象420和代理對(duì)象410中分別創(chuàng)建的一對(duì)通信窗口 430用于使活動(dòng)對(duì)象420和代理對(duì)象410進(jìn)行通信。進(jìn)一步的,運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象
為多個(gè),代理對(duì)象和活動(dòng)對(duì)象--對(duì)應(yīng),代理對(duì)象的通信窗口和與代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)
象的通信窗口具有對(duì)應(yīng)的屬性,通過該一對(duì)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。根據(jù)本實(shí)施例提供的進(jìn)程間的腳本執(zhí)行系統(tǒng),在活動(dòng)對(duì)象將腳本發(fā)送給代理對(duì)象之后,代理對(duì)象查詢頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行的方法,進(jìn)而根據(jù)腳本執(zhí)行的方法執(zhí)行活動(dòng)對(duì)象發(fā)送過來(lái)的腳本,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象對(duì)運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面的控制。進(jìn)一步的,在本系統(tǒng)中,通過在頁(yè)面進(jìn)程中運(yùn)行代理對(duì)象,而在獨(dú)立進(jìn)程中運(yùn)行活動(dòng)對(duì)象,使得真正的ActiveX插件與頁(yè)面進(jìn)程分離,從而使ActiveX插件出現(xiàn)問題時(shí)不會(huì)影響頁(yè)面進(jìn)程,提高了瀏覽器的穩(wěn)定性,尤其是當(dāng)ActiveX插件出現(xiàn)病毒等安全性問題時(shí),也不會(huì)對(duì)頁(yè)面進(jìn)程產(chǎn)生影響,提高了瀏覽器的安全性;同時(shí),頁(yè)面進(jìn)程出現(xiàn)問題不會(huì)影響ActiveX插件的正常運(yùn)行,提高了插件的穩(wěn)定性。圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的進(jìn)程間的腳本執(zhí)行系統(tǒng)的結(jié)構(gòu)框圖。如圖5所示,該系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象510、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象520以及分別在代理對(duì)象510和活動(dòng)對(duì)象520中創(chuàng)建的一對(duì)通信窗口 530。該系統(tǒng)適用于由活動(dòng)對(duì)象520執(zhí)行頁(yè)面進(jìn)程中的腳本,代理對(duì)象510和活動(dòng)對(duì)象520通過一對(duì)通信窗口 530進(jìn)行通信。代理對(duì)象510包括發(fā)送模塊511、調(diào)度標(biāo)識(shí)獲取模塊512以及攔截模塊513。發(fā)送模塊511適于通過通信窗口將腳本發(fā)送給活動(dòng)對(duì)象520 ;在獨(dú)立進(jìn)程創(chuàng)建完成活動(dòng)對(duì)象520之后,會(huì)向頁(yè)面通知活動(dòng)對(duì)象520的變量,頁(yè)面開發(fā)者根據(jù)該變量在頁(yè)面中寫入腳本,發(fā)送模塊511通過通信窗口 530將腳本發(fā)送給活動(dòng)對(duì)象520。調(diào)度標(biāo)識(shí)獲取模塊512適于通過調(diào)用活動(dòng)對(duì)象520的調(diào)度接口,獲取腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)。進(jìn)一步的,調(diào)度標(biāo)識(shí)獲取模塊512包括調(diào)用模塊514和調(diào)度標(biāo)識(shí)接收模塊515,調(diào)用模塊514適于調(diào)用活動(dòng)對(duì)象520的調(diào)度接口,讓活動(dòng)對(duì)象520執(zhí)行獲取腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)的方法獲取調(diào)度標(biāo)識(shí);調(diào)度標(biāo)識(shí)接收模塊515適于接收活動(dòng)對(duì)象520通過通信窗口 530返回的調(diào)度標(biāo)識(shí)。具體來(lái)說(shuō),首先頁(yè)面解析腳本,將該腳本中待執(zhí)行的方法的名稱調(diào)到代理對(duì)象510的IDispatch接口中,IDispatch接口為調(diào)度接口,用于調(diào)用不支持虛函數(shù)表的語(yǔ)言程序中的函數(shù),IDispatch接口具有GetIDsOfNames函數(shù) 和Invoke函數(shù),其中GetIDsOfNames函數(shù)提供的是利用方法的名稱返回其調(diào)度ID的方法,Invoke函數(shù)提供的是利用方法的調(diào)度ID執(zhí)行方法的指令。由于代理對(duì)象510無(wú)法獲知腳本中待執(zhí)行方法的調(diào)度ID,所以調(diào)用模塊514通過通信窗口 530調(diào)用活動(dòng)對(duì)象520的IDispatch接口。而活動(dòng)對(duì)象520是真正的插件的對(duì)象,所以通過調(diào)用活動(dòng)對(duì)象520的GetIDsOfNames函數(shù)提供的方法,可以讓活動(dòng)對(duì)象520獲取待執(zhí)行的方法的調(diào)度ID,然后活動(dòng)對(duì)象520通過通信窗口 530將該調(diào)度ID返回給調(diào)度標(biāo)識(shí)接收模塊515。攔截模塊513適于攔截頁(yè)面進(jìn)程中執(zhí)行腳本中待執(zhí)行方法的指令,將指令發(fā)送給活動(dòng)對(duì)象520。在代理對(duì)象510獲得待執(zhí)行的方法的調(diào)度ID之后,將該調(diào)度ID反饋給頁(yè)面,按照常規(guī)流程頁(yè)面進(jìn)程下一步就會(huì)執(zhí)行Invoke(ID)的指令,在這里攔截模塊513攔截頁(yè)面進(jìn)程的Invoke (ID)的指令,將Invoke (ID)的指令發(fā)送給活動(dòng)對(duì)象520?;顒?dòng)對(duì)象520包括接收模塊521和執(zhí)行模塊522。接收模塊521適于接收代理對(duì)象510中的發(fā)送模塊511發(fā)送的腳本以及攔截模塊513發(fā)送的指令;執(zhí)行模塊522適于通過執(zhí)行指令,執(zhí)行腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給代理對(duì)象510。執(zhí)行模塊522執(zhí)行Invoke(ID)的指令,從而執(zhí)行腳本中待執(zhí)行的方法,并將執(zhí)行結(jié)果返回給代理對(duì)象510,然后代理對(duì)象510會(huì)將執(zhí)行結(jié)果反饋給頁(yè)面。上述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象510是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的;運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象520是在頁(yè)面進(jìn)程激活代理對(duì)象510時(shí),在獨(dú)立于頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的;在活動(dòng)對(duì)象520和代理對(duì)象510中分別創(chuàng)建的一對(duì)通信窗口 530用于使活動(dòng)對(duì)象520和代理對(duì)象510進(jìn)行通信。進(jìn)一步的,運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象
為多個(gè),代理對(duì)象和活動(dòng)對(duì)象--對(duì)應(yīng),代理對(duì)象的通信窗口和與代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)
象的通信窗口具有對(duì)應(yīng)的屬性,通過該一對(duì)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。根據(jù)本實(shí)施例提供的進(jìn)程間的腳本執(zhí)行系統(tǒng),在代理對(duì)象將腳本發(fā)送給活動(dòng)對(duì)象之后,代理對(duì)象調(diào)用活動(dòng)對(duì)象的調(diào)度接口獲取腳本中待執(zhí)行方法的調(diào)度ID ;在代理對(duì)象將調(diào)度ID反饋給頁(yè)面后,代理對(duì)象攔截頁(yè)面進(jìn)程執(zhí)行腳本中待執(zhí)行方法的指令,將指令發(fā)送給活動(dòng)對(duì)象,由活動(dòng)對(duì)象執(zhí)行該指令,并將執(zhí)行指令后獲得的執(zhí)行結(jié)果返回給代理對(duì)象,由此實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行,并且實(shí)現(xiàn)了運(yùn)行于頁(yè)面進(jìn)程中的頁(yè)面對(duì)運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象的控制。進(jìn)一步的,在本系統(tǒng)中,通過在頁(yè)面進(jìn)程中運(yùn)行代理對(duì)象,而在獨(dú)立進(jìn)程中運(yùn)行活動(dòng)對(duì)象,使得真正的ActiveX插件與頁(yè)面進(jìn)程分離,從而使ActiveX插件出現(xiàn)問題時(shí)不會(huì)影響頁(yè)面進(jìn)程,提高了瀏覽器的穩(wěn)定性,尤其是當(dāng)ActiveX插件出現(xiàn)病毒等安全性問題時(shí),也不會(huì)對(duì)頁(yè)面進(jìn)程產(chǎn)生影響,提高了瀏覽器的安全性;同時(shí),頁(yè)面進(jìn)程出現(xiàn)問題不會(huì)影響ActiveX插件的正常運(yùn)行,提高了插件的穩(wěn)定性。本發(fā)明還提供了一種瀏覽器,該瀏覽器可以包括上述實(shí)施例所描述的任一進(jìn)程間的腳本執(zhí)行系統(tǒng)。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的進(jìn)程間的腳本執(zhí)行系統(tǒng)及瀏覽器中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種進(jìn)程間的腳本執(zhí)行方法,該方法適用于由運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象執(zhí)行運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過預(yù)先建立的通信窗口進(jìn)行通信,所述方法包括 所述活動(dòng)對(duì)象通過通信窗口將腳本發(fā)送給所述代理對(duì)象; 所述代理對(duì)象查詢所述頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法; 所述代理對(duì)象根據(jù)所述腳本執(zhí)行方法執(zhí)行所述腳本。
2.根據(jù)權(quán)利要求1所述的方法,所述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的; 所述運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象是在頁(yè)面進(jìn)程激活所述代理對(duì)象時(shí),在獨(dú)立于頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的; 在所述活動(dòng)對(duì)象和代理對(duì)象中分別創(chuàng)建的所述通信窗口用于使活動(dòng)對(duì)象和代理對(duì)象進(jìn)行通信。
3.根據(jù)權(quán)利要求2所述的方法,運(yùn)行于所述頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于所述獨(dú)立進(jìn)程中的活動(dòng)對(duì)象為多個(gè),所述代理對(duì)象和活動(dòng)對(duì)象一一對(duì)應(yīng),所述代理對(duì)象的通信窗口和與所述代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)象的通信窗口具有對(duì)應(yīng)的屬性,通過該兩個(gè)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。
4.一種進(jìn)程間的腳本執(zhí)行方法,該方法適用于由運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象執(zhí)行運(yùn)行于頁(yè)面進(jìn)程中代理對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過預(yù)先建立的通信窗口進(jìn)行通信,所述方法包括 所述代理對(duì)象通過通信窗口將腳本發(fā)送給所述活動(dòng)對(duì)象; 所述代理對(duì)象通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí); 所述代理對(duì)象攔截頁(yè)面進(jìn)程中執(zhí)行所述腳本中待執(zhí)行方法的指令,將所述指令發(fā)送給所述活動(dòng)對(duì)象; 所述活動(dòng)對(duì)象通過執(zhí)行所述指令,執(zhí)行所述腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給代理對(duì)象。
5.根據(jù)權(quán)利要求4所述的方法,所述代理對(duì)象通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)的步驟包括 所述代理對(duì)象通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,讓所述活動(dòng)對(duì)象執(zhí)行獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)的方法,而后所述活動(dòng)對(duì)象通過通信窗口將所述調(diào)度標(biāo)識(shí)返回給所述代理對(duì)象。
6.根據(jù)權(quán)利要求4或5所述的方法,所述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的; 所述運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象是在頁(yè)面進(jìn)程激活所述代理對(duì)象時(shí),在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的; 在所述活動(dòng)對(duì)象和代理對(duì)象中分別創(chuàng)建的所述通信窗口用于使活動(dòng)對(duì)象和代理對(duì)象進(jìn)行通信。
7.根據(jù)權(quán)利要求6所述的方法,運(yùn)行于所述頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于所述獨(dú)立進(jìn)程中的活動(dòng)對(duì)象為多個(gè),所述代理對(duì)象和活動(dòng)對(duì)象一一對(duì)應(yīng),所述代理對(duì)象的通信窗口和與所述代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)象的通信窗口具有對(duì)應(yīng)的屬性,通過該兩個(gè)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。
8.—種進(jìn)程間的腳本執(zhí)行系統(tǒng),所述系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象以及分別在所述代理對(duì)象和活動(dòng)對(duì)象中創(chuàng)建的一對(duì)通信窗口 ;該系統(tǒng)適用于由代理對(duì)象執(zhí)行活動(dòng)對(duì)象的腳本,所述代理對(duì)象和活動(dòng)對(duì)象通過所述一對(duì)通信窗口進(jìn)行通信; 所述活動(dòng)對(duì)象包括 發(fā)送模塊,適于通過通信窗口將腳本發(fā)送給所述代理對(duì)象; 所述代理對(duì)象包括 查詢模塊,適于查詢所述頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法; 執(zhí)行模塊,適于根據(jù)所述腳本執(zhí)行方法執(zhí)行所述腳本。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),所述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的; 所述運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象是在頁(yè)面進(jìn)程激活所述代理對(duì)象時(shí),在獨(dú)立于頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的; 在所述活動(dòng)對(duì)象和代理對(duì)象中分別創(chuàng)建的所述一對(duì)通信窗口用于使活動(dòng)對(duì)象和代理對(duì)象進(jìn)行通信。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),運(yùn)行于所述頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于所述獨(dú)立進(jìn)程中的活動(dòng)對(duì)象為多個(gè),所述代理對(duì)象和活動(dòng)對(duì)象一一對(duì)應(yīng),所述代理對(duì)象的通信窗口和與所述代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)象的通信窗口具有對(duì)應(yīng)的屬性,通過該一對(duì)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。
11.一種包括權(quán)利要求8至10任一項(xiàng)所述的進(jìn)程間的腳本執(zhí)行系統(tǒng)的瀏覽器。
12.—種進(jìn)程間的腳本執(zhí)行系統(tǒng),所述系統(tǒng)包括運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象、運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象以及分別在所述代理對(duì)象和活動(dòng)對(duì)象上創(chuàng)建的一對(duì)通信窗口 ;該系統(tǒng)適用于由活動(dòng)對(duì)象執(zhí)行頁(yè)面進(jìn)程中的腳本,所述活動(dòng)對(duì)象和代理對(duì)象通過所述一對(duì)通信窗口進(jìn)行通信; 所述代理對(duì)象包括 發(fā)送模塊,適于通過通信窗口將腳本發(fā)送給所述活動(dòng)對(duì)象; 調(diào)度標(biāo)識(shí)獲取模塊,適于通過調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí); 攔截模塊,適于攔截頁(yè)面進(jìn)程中執(zhí)行所述腳本中待執(zhí)行方法的指令,將所述指令發(fā)送給所述活動(dòng)對(duì)象; 所述活動(dòng)對(duì)象包括 接收模塊,適于接收所述代理對(duì)象中的發(fā)送模塊發(fā)送的腳本以及攔截模塊發(fā)送的指令; 執(zhí)行模塊,適于通過執(zhí)行所述指令,執(zhí)行所述腳本中待執(zhí)行方法,而后將執(zhí)行結(jié)果返回給代理對(duì)象。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),所述調(diào)度標(biāo)識(shí)獲取模塊包括 調(diào)用模塊,適于調(diào)用所述活動(dòng)對(duì)象的調(diào)度接口,讓所述活動(dòng)對(duì)象執(zhí)行獲取所述腳本中待執(zhí)行方法的調(diào)度標(biāo)識(shí)的方法獲取所述調(diào)度標(biāo)識(shí); 調(diào)度標(biāo)識(shí)接收模塊,適于接收所述活動(dòng)對(duì)象通過通信窗口返回的所述調(diào)度標(biāo)識(shí)。
14.根據(jù)權(quán)利要求12或13所述的系統(tǒng),所述運(yùn)行于頁(yè)面進(jìn)程中的代理對(duì)象是通過攔截瀏覽器的頁(yè)面進(jìn)程創(chuàng)建活動(dòng)對(duì)象的過程,替換實(shí)際要?jiǎng)?chuàng)建的活動(dòng)對(duì)象而創(chuàng)建的; 所述運(yùn)行于獨(dú)立進(jìn)程中的活動(dòng)對(duì)象是在頁(yè)面進(jìn)程激活所述代理對(duì)象時(shí),在獨(dú)立于瀏覽器頁(yè)面進(jìn)程的獨(dú)立進(jìn)程中創(chuàng)建的; 在所述活動(dòng)對(duì)象和代理對(duì)象中分別創(chuàng)建的所述一對(duì)通信窗口用于使活動(dòng)對(duì)象和代理對(duì)象進(jìn)行通信。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),運(yùn)行于所述頁(yè)面進(jìn)程中的代理對(duì)象為多個(gè),運(yùn)行于所述獨(dú)立進(jìn)程中的活動(dòng)對(duì)象為多個(gè),所述代理對(duì)象和活動(dòng)對(duì)象一一對(duì)應(yīng),所述代理對(duì)象的通信窗口和與所述代理對(duì)象對(duì)應(yīng)的活動(dòng)對(duì)象的通信窗口具有對(duì)應(yīng)的屬性,通過該一對(duì)通信窗口實(shí)現(xiàn)活動(dòng)對(duì)象和代理對(duì)象的通信。
16.一種包括權(quán)利要求12至15任一項(xiàng)所述的進(jìn)程間的腳本執(zhí)行系統(tǒng)的瀏覽器。
全文摘要
本發(fā)明公開了一種進(jìn)程間的腳本執(zhí)行方法、系統(tǒng)及瀏覽器。其中方法包括所述活動(dòng)對(duì)象通過通信窗口將腳本發(fā)送給所述代理對(duì)象;所述代理對(duì)象查詢所述頁(yè)面進(jìn)程中與腳本執(zhí)行有關(guān)的接口,根據(jù)該接口獲取腳本執(zhí)行方法;所述代理對(duì)象根據(jù)所述腳本執(zhí)行方法執(zhí)行所述腳本。本發(fā)明實(shí)現(xiàn)了不同進(jìn)程之間腳本的執(zhí)行。
文檔編號(hào)G06F9/54GK103019867SQ201210572598
公開日2013年4月3日 申請(qǐng)日期2012年12月25日 優(yōu)先權(quán)日2012年12月25日
發(fā)明者李錦偉, 賀躍松, 陳志 , 付俁, 任寰 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司