进程间的脚本执行方法、系统及浏览器的制作方法

文档序号:6385443阅读:179来源:国知局
专利名称:进程间的脚本执行方法、系统及浏览器的制作方法
技术领域
本发明涉及计算机网络技术领域,具体涉及一种进程间的脚本执行方法、系统及浏览器。
背景技术
IPC (Inter-Process Communication,进程间通信)是指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。不同的进程可以运行在同一计算机上或通过网络连接的不同计算机上。一般来说,在以下情况下需要实现进程间通信(I)数据传输一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。(2)共享数据多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。(3)通知事件一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。(4)资源共享多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。(5)进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。但是,现有技术还未提供关于进程间脚本执行的方案,利用现有的方法还不能实现进程间脚本的交互执行。

发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的进程间的脚本执行系统、浏览器和相应的进程间的脚本执行方法。根据本发明的一个方面,提供了一种进程间的脚本执行方法,该方法适用于由运行于页面进程中的代理对象执行运行于独立进程中的活动对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括所述活动对象通过通信窗口将脚本发送给所述代理对象;所述代理对象查询所述页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法;所述代理对象根据所述脚本执行方法执行所述脚本。根据本发明的一个方面,提供了一种进程间的脚本执行系统,所述系统包括运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象中创建的一对通信窗口 ;该系统适用于由代理对象执行活动对象的脚本,所述代理对象和活动对象通过所述一对通信窗口进行通信;所述活动对象包括发送模块,适于通过通信窗口将脚本发送给所述代理对象;所述代理对象包括查询模块,适于查询所述页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法;执行模块,适于根据所述脚本执行方法执行所述脚本。根据本发明的一个方面,提供了一种浏览器,包括上述进程间的脚本执行系统。根据本发明的另一方面,提供了另一种进程间的脚本执行方法,该方法适用于由运行于独立进程中的活动对象执行运行于页面进程中代理对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括所述代理对象通过通信窗口将脚本发送给所述活动对象;所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识;所述代理对象拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象;所述活动对象通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。根据本发明的另一方面,提供了另一种进程间的脚本执行系统,所述系统包括运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象上创建的一对通信窗口 ;该系统适用于由活动对象执行页面进程中的脚本,所述活动对象和代理对象通过所述一对通信窗口进行通信;所述代理对象包括发送模块,适于通过通信窗口将脚本发送给所述活动对象;调度标识获取模块,适于通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识;拦截模块,适于拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象;所述活动对象包括接收模块,适于接收所述代理对象中的发送模块发送的脚本以及拦截模块发送的指令;执行模块,适于通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。根据本发明的另一个方面,提供了另一种浏览器,包括上述另一种进程间的脚本执打系统。根据本发明的一个方面提供的方案,在活动对象将脚本发送给代理对象之后,代理对象查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行的方法,进而根据脚本执行的方法执行活动对象发送过来的脚本,由此实现了不同进程之间脚本的执行,并且实现了运行于独立进程中的活动对象对运行于页面进程中的页面的控制。根据本发明的另一个方面提供的方案,在代理对象将脚本发送给活动对象之后,代理对象调用活动对象的调度接口获取脚本中待执行方法的调度标识;在代理对象将调度标识反馈给页面后,代理对象拦截页面进程执行脚本中待执行方法的指令,将指令发送给活动对象,由活动对象执行该指令,并将执行指令后获得的执行结果返回给代理对象,由此实现了不同进程之间脚本的执行,并且实现了运行于页面进程中的页面对运行于独立进程中的活动对象的控制。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式



通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了本发明中Flash插件代理对象和Flash插件活动对象的创建过程的示意图;图2示出了根据本发明一个实施例的进程间的脚本执行方法的流程图;图3示出了根据本发明另一个实施例的进程间的脚本执行方法的流程图;图4示出了根据本发明一个实施例的进程间的脚本执行系统的结构框图;图5示出了根据本发明另一个实施例的进程间的脚本执行系统的结构框图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本发明提供的进程间的脚本执行方法是指页面进程与独立进程之间的脚本执行方法。其中页面进程运行Web页面的进程,独立进程是独立于页面进程的另一进程。在页面有ActiveX插件的情况下,页面进程运行ActiveX插件代理对象,独立进程运行ActiveX插件活动对象,该ActiveX插件活动对象是真正的ActiveX插件的对象。在以下实施例中,以ActiveX插件为Flash插件为例进行说明,但本发明不仅限于此。在介绍页面进程和独立进程之间的脚本执行方法之前,首先介绍Flash插件代理对象和Flash插件活动对象的创建过程。图1示出了本发明中Flash插件代理对象和Flash插件活动对象的创建过程的示意图。如图1所示,页面进程中运行有Web页面和Flash插件代理对象,独立进程中运行有空页面和Flash插件活动对象。其中,运行于页面进程中的Flash代理对象是通过拦截浏览器的页面进程创建Flash活动对象的过程,替换实际要创建的Flash活动对象而创建的。具体来说,在页面中有Flash的情况下,当浏览器创建Flash插件时,会根据Flash插件CLSID (类标识,可通过CLSIDFromProID获得)或ProgID(组件的字符串标识符)查询注册表,查看系统是否已安装该Flash插件,若安装则继续创建过程。在页面进程继续创建Flash插件时,拦截CoGetClassOb ject,创建Flash插件代理对象,该Flash插件代理对象包括一系列接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件代理对象返回给页面进程的IUnknown指针。由此Flash插件代理对象创建完成。运行于独立进程中的Flash插件活动对象是在页面进程激活Flash插件代理对象时,在独立于页面进程的独立进程中创建的。具体来说,在页面进程激活Flash插件代理对象时,提取出该Flash插件的属性、URL、大小等相关信息,然后创建一个独立进程。首先,仓Il建一个文件(document),即空页面,在其中插入一个对象(object),该独立进程调用CoGetClassObject,拦截该 CoGetClassObject,创建一个 Flash 插件活动对象。该 Flash插件活动对象包括一系列的接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject 等。然后在调用 IClassFactory 的 CreateInstance 时,将所创建的Flash插件活动对象返回给独立进程的IUnknown指针。由此Flash插件活动对象创建完成。接着,在Flash插件代理对象和Flash插件活动对象中分别创建与插件对象关联的通信窗口,用于使Flash插件代理对象和Flash插件活动对象进行通信。通过这两个通信窗口,两个对象可以针对Flash的大小、焦点、刷新、脚本以及其它信息进行交互。进一步的,如果Web页面中有嵌套结构,即页面进程运行有多个父页面和多个子页面。每当页面进程创建一个子页面及其代理对象时,将子页面的代理对象ID (也可包括其URL)和该子页面的父页面的代理对象ID(也可包括其URL)发送给独立进程,在独立进程中按照对应的层次结构创建活动对象。在这种情况下,运行于页面进程中的代理对象为多个,运行于独立进程中的活动对象为多个,代理对象和活动对象一一对应,每个代理对象的通信窗口和与该代理对象对应的活动对象的通信窗口具有对应的属性,通过这两个通信窗口实现活动对象和与其对应的代理对象的通信。图2示出了根据本发明一个实施例的进程间的脚本执行方法200的流程图。该方法适用于由运行于页面进程中的Flash插件代理对象执行运行于独立进程中的Flash插件活动对象的脚本,即该方法是运行于独立进程中的Flash插件活动对象控制页面进程中页面的方法。如图2所示,方法200始于步骤S201,其中Flash插件活动对象通过通信窗口将脚本发送给Flash插件代理对象。以用户点击Flash上创建的按钮,触发页面变黑为例,当用户点击Flash上的按钮时,Flash插件活动对象获取按钮点击操作对应的脚本,将该脚本通过通信窗口发送给Flash插件代理对象。随后,方法200进入步骤S202,其中Flash插件代理对象查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法。在Flash插件代理对象接收到上述按钮点击操作对应的脚本之后,查询和获取页面进程中的IHTMLWindow接口,IHTMLffindow接口为与脚本执行有关的接口,该IHTMLWindow接口中的ExecScript为用于执行脚本的函数,即ExecScript函数提供脚本执行方法。随后,方法200进入步骤S203,其中Flash插件代理对象根据脚本执行方法执行该脚本。Flash插件代理对象根据ExecScript函数提供的脚本执行方法执行上述按钮点击操作对应的脚本,使页面变黑。根据本实施例提供的进程间的脚本执行方法,在活动对象将脚本发送给代理对象之后,代理对象查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行的方法,进而根据脚本执行的方法执行活动对象发送过来的脚本,由此实现了不同进程之间脚本的执行,并且实现了运行于独立进程中的活动对象对运行于页面进程中的页面的控制。进一步的,在本方法中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的ActiveX插件与页面进程分离,从而使ActiveX插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当ActiveX插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响ActiveX插件的正常运行,提高了插件的稳定性。图3示出了根据本发明另一个实施例的进程间的脚本执行方法300的流程图。该方法适用于由运行于独立进程中的Flash插件活动对象执行运行于页面进程中的Flash插件代理对象的脚本,即该方法是运行于页面进程中的页面控制独立进程中Flash插件活动对象的方法。如果页面想要获取Flash的信息(如版本号、路径、URL等属性)或者页面想要操作Flash (如页面想要改变Flash窗口的大小),都可以通过该方法来实现。如图3所示,方法300始于步骤S30l,Flash插件代理对象通过通信窗口将脚本发送给Flash插件活动对象。以获取Flash版本号为例,由于页面进程中的Flash插件代理对象并不是真正的Flash插件,它并不知道Flash版本号,因而Flash插件代理对象不能直接向页面反馈Flash版本号。在独立进程创建完成Flash插件活动对象之后,会向页面通知Flash插件活动对象的变量,页面开发者根据该变量在页面中写入获取Flash版本号的脚本,该脚本中待执行的方法就是获取Flash版本号。Flash插件代理对象通过通信窗口将获取Flash版本号的脚本发送给Flash插件活动对象。随后,方法300进入步骤S302,其中Flash插件代理对象通过调用Flash插件活动对象的调度接口,让Flash插件活动对象执行获取脚本中待执行方法的调度标识的方法,在Flash插件活动对象获取该调度标识后通过通信窗口将调度标识返回给Flash插件代理对象。具体来说,首先页面解析脚本,将该脚本中待执行的方法的名称调到Flash插件代理对象的IDispatch接口中,IDispatch接口为调度接口,用于调用不支持虚函数表的语言程序中的函数,IDispatch接口具有GetIDsOfNames函数和Invoke函数,其中GetIDsOfNames函数提供的是利用方法的名称返回其调度ID的方法,Invoke函数提供的是利用方法的调度ID执行方法的指令。由于Flash插件代理对象无法获知脚本中待执行方法的调度标识(ID),所以Flash插件代理对象通过通信窗口调用Flash插件活动对象的IDispatch接口。而Flash插件活动对象是真正的Flash插件的对象,所以通过调用Flash插件活动对象的GetIDsOfNames函数提供的方法,可以让Flash插件活动对象获取待执行的方法的调度ID,然后Flash插件活动对象通过通信窗口将该调度ID返回给Flash插件代理对象。随后,方法300进入步骤S303,其中Flash插件代理对象拦截页面进程中执行脚本中待执行方法的指令,将该指令发送给Flash插件活动对象。具体来说,在Flash插件代理对象获得待执行的方法的调度ID之后,将该调度ID反馈给页面,按照常规流程页面进程下一步就会执行Invoke(ID)的指令,本方法在这里拦截页面进程的Invoke (ID)的指令,将Invoke (ID)的指令发送给Flash插件活动对象。随后,方法300进入步骤S304,其中Flash插件活动对象通过执行指令,执行脚本中待执行方法,而后将执行结果返回给Flash插件代理对象。具体来说,Flash插件活动对象执行Invoke (ID)的指令,从而执行脚本中待执行的方法,获取Flash版本号,并将Flash版本号返回给Flash插件代理对象,然后Flash插件代理对象会将Flash版本号反馈给页面。根据本实施例提供的进程间的脚本执行方法,在代理对象将脚本发送给活动对象之后,代理对象调用活动对象的调度接口获取脚本中待执行方法的调度ID ;在代理对象将调度ID反馈给页面后,代理对象拦截页面进程执行脚本中待执行方法的指令,将指令发送给活动对象,由活动对象执行该指令,并将执行指令后获得的执行结果返回给代理对象,由此实现了不同进程之间脚本的执行,并且实现了运行于页面进程中的页面对运行于独立进程中的活动对象的控制。进一步的,在本方法中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的ActiveX插件与页面进程分离,从而使ActiveX插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当ActiveX插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响ActiveX插件的正常运行,提高了插件的稳定性。图4示出了根据本发明一个实施例的进程间的脚本执行系统的结构框图。如图4所示,该系统包括运行于页面进程中的代理对象410、运行于独立进程中的活动对象420以及分别在代理对象410和活动对象420中创建的一对通信窗口 430。该系统适用于由代理对象410执行活动对象420的脚本,代理对象410和活动对象420通过一对通信窗口 430进行通信。活动对象420包括发送模块421,适于通过通信窗口 430将脚本发送给代理对象410。以用户点击Flash上创建的按钮,触发页面变黑为例,当用户点击Flash上的按钮时,活动对象420获取按钮点击操作对应的脚本,由发送模块421将该脚本通过通信窗口 430发送给代理对象410。代理对象410包括查询模块411和执行模块412。查询模块411适于查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法;执行模块412适于根据脚本执行方法执行脚本。在代理对象410接收到上述按钮点击操作对应的脚本之后,查询模块411查询和获取页面进程中的IHTMLWindow接口,IHTMLWindow接口为与脚本执行有关的接口,该IHTMLWindow接口中的ExecScript为用于执行脚本的函数,即ExecScript函数提供脚本执行方法。执行模块412根据ExecScript函数提供的脚本执行方法执行上述按钮点击操作对应的脚本,使页面变黑。上述运行于页面进程中的代理对象410是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的;运行于独立进程中的活动对象420是在页面进程激活代理对象410时,在独立于页面进程的独立进程中创建的;在活动对象420和代理对象410中分别创建的一对通信窗口 430用于使活动对象420和代理对象410进行通信。进一步的,运行于页面进程中的代理对象为多个,运行于独立进程中的活动对象
为多个,代理对象和活动对象--对应,代理对象的通信窗口和与代理对象对应的活动对
象的通信窗口具有对应的属性,通过该一对通信窗口实现活动对象和代理对象的通信。根据本实施例提供的进程间的脚本执行系统,在活动对象将脚本发送给代理对象之后,代理对象查询页面进程中与脚本执行有关的接口,根据该接口获取脚本执行的方法,进而根据脚本执行的方法执行活动对象发送过来的脚本,由此实现了不同进程之间脚本的执行,并且实现了运行于独立进程中的活动对象对运行于页面进程中的页面的控制。进一步的,在本系统中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的ActiveX插件与页面进程分离,从而使ActiveX插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当ActiveX插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响ActiveX插件的正常运行,提高了插件的稳定性。图5示出了根据本发明另一个实施例的进程间的脚本执行系统的结构框图。如图5所示,该系统包括运行于页面进程中的代理对象510、运行于独立进程中的活动对象520以及分别在代理对象510和活动对象520中创建的一对通信窗口 530。该系统适用于由活动对象520执行页面进程中的脚本,代理对象510和活动对象520通过一对通信窗口 530进行通信。代理对象510包括发送模块511、调度标识获取模块512以及拦截模块513。发送模块511适于通过通信窗口将脚本发送给活动对象520 ;在独立进程创建完成活动对象520之后,会向页面通知活动对象520的变量,页面开发者根据该变量在页面中写入脚本,发送模块511通过通信窗口 530将脚本发送给活动对象520。调度标识获取模块512适于通过调用活动对象520的调度接口,获取脚本中待执行方法的调度标识。进一步的,调度标识获取模块512包括调用模块514和调度标识接收模块515,调用模块514适于调用活动对象520的调度接口,让活动对象520执行获取脚本中待执行方法的调度标识的方法获取调度标识;调度标识接收模块515适于接收活动对象520通过通信窗口 530返回的调度标识。具体来说,首先页面解析脚本,将该脚本中待执行的方法的名称调到代理对象510的IDispatch接口中,IDispatch接口为调度接口,用于调用不支持虚函数表的语言程序中的函数,IDispatch接口具有GetIDsOfNames函数 和Invoke函数,其中GetIDsOfNames函数提供的是利用方法的名称返回其调度ID的方法,Invoke函数提供的是利用方法的调度ID执行方法的指令。由于代理对象510无法获知脚本中待执行方法的调度ID,所以调用模块514通过通信窗口 530调用活动对象520的IDispatch接口。而活动对象520是真正的插件的对象,所以通过调用活动对象520的GetIDsOfNames函数提供的方法,可以让活动对象520获取待执行的方法的调度ID,然后活动对象520通过通信窗口 530将该调度ID返回给调度标识接收模块515。拦截模块513适于拦截页面进程中执行脚本中待执行方法的指令,将指令发送给活动对象520。在代理对象510获得待执行的方法的调度ID之后,将该调度ID反馈给页面,按照常规流程页面进程下一步就会执行Invoke(ID)的指令,在这里拦截模块513拦截页面进程的Invoke (ID)的指令,将Invoke (ID)的指令发送给活动对象520。活动对象520包括接收模块521和执行模块522。接收模块521适于接收代理对象510中的发送模块511发送的脚本以及拦截模块513发送的指令;执行模块522适于通过执行指令,执行脚本中待执行方法,而后将执行结果返回给代理对象510。执行模块522执行Invoke(ID)的指令,从而执行脚本中待执行的方法,并将执行结果返回给代理对象510,然后代理对象510会将执行结果反馈给页面。上述运行于页面进程中的代理对象510是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的;运行于独立进程中的活动对象520是在页面进程激活代理对象510时,在独立于页面进程的独立进程中创建的;在活动对象520和代理对象510中分别创建的一对通信窗口 530用于使活动对象520和代理对象510进行通信。进一步的,运行于页面进程中的代理对象为多个,运行于独立进程中的活动对象
为多个,代理对象和活动对象--对应,代理对象的通信窗口和与代理对象对应的活动对
象的通信窗口具有对应的属性,通过该一对通信窗口实现活动对象和代理对象的通信。根据本实施例提供的进程间的脚本执行系统,在代理对象将脚本发送给活动对象之后,代理对象调用活动对象的调度接口获取脚本中待执行方法的调度ID ;在代理对象将调度ID反馈给页面后,代理对象拦截页面进程执行脚本中待执行方法的指令,将指令发送给活动对象,由活动对象执行该指令,并将执行指令后获得的执行结果返回给代理对象,由此实现了不同进程之间脚本的执行,并且实现了运行于页面进程中的页面对运行于独立进程中的活动对象的控制。进一步的,在本系统中,通过在页面进程中运行代理对象,而在独立进程中运行活动对象,使得真正的ActiveX插件与页面进程分离,从而使ActiveX插件出现问题时不会影响页面进程,提高了浏览器的稳定性,尤其是当ActiveX插件出现病毒等安全性问题时,也不会对页面进程产生影响,提高了浏览器的安全性;同时,页面进程出现问题不会影响ActiveX插件的正常运行,提高了插件的稳定性。本发明还提供了一种浏览器,该浏览器可以包括上述实施例所描述的任一进程间的脚本执行系统。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式
的权利要求书由此明确地并入该具体实施方式
,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的进程间的脚本执行系统及浏览器中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
权利要求
1.一种进程间的脚本执行方法,该方法适用于由运行于页面进程中的代理对象执行运行于独立进程中的活动对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括 所述活动对象通过通信窗口将脚本发送给所述代理对象; 所述代理对象查询所述页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法; 所述代理对象根据所述脚本执行方法执行所述脚本。
2.根据权利要求1所述的方法,所述运行于页面进程中的代理对象是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的; 所述运行于独立进程中的活动对象是在页面进程激活所述代理对象时,在独立于页面进程的独立进程中创建的; 在所述活动对象和代理对象中分别创建的所述通信窗口用于使活动对象和代理对象进行通信。
3.根据权利要求2所述的方法,运行于所述页面进程中的代理对象为多个,运行于所述独立进程中的活动对象为多个,所述代理对象和活动对象一一对应,所述代理对象的通信窗口和与所述代理对象对应的活动对象的通信窗口具有对应的属性,通过该两个通信窗口实现活动对象和代理对象的通信。
4.一种进程间的脚本执行方法,该方法适用于由运行于独立进程中的活动对象执行运行于页面进程中代理对象的脚本,所述代理对象和活动对象通过预先建立的通信窗口进行通信,所述方法包括 所述代理对象通过通信窗口将脚本发送给所述活动对象; 所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识; 所述代理对象拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象; 所述活动对象通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。
5.根据权利要求4所述的方法,所述代理对象通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识的步骤包括 所述代理对象通过调用所述活动对象的调度接口,让所述活动对象执行获取所述脚本中待执行方法的调度标识的方法,而后所述活动对象通过通信窗口将所述调度标识返回给所述代理对象。
6.根据权利要求4或5所述的方法,所述运行于页面进程中的代理对象是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的; 所述运行于独立进程中的活动对象是在页面进程激活所述代理对象时,在独立于浏览器页面进程的独立进程中创建的; 在所述活动对象和代理对象中分别创建的所述通信窗口用于使活动对象和代理对象进行通信。
7.根据权利要求6所述的方法,运行于所述页面进程中的代理对象为多个,运行于所述独立进程中的活动对象为多个,所述代理对象和活动对象一一对应,所述代理对象的通信窗口和与所述代理对象对应的活动对象的通信窗口具有对应的属性,通过该两个通信窗口实现活动对象和代理对象的通信。
8.—种进程间的脚本执行系统,所述系统包括运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象中创建的一对通信窗口 ;该系统适用于由代理对象执行活动对象的脚本,所述代理对象和活动对象通过所述一对通信窗口进行通信; 所述活动对象包括 发送模块,适于通过通信窗口将脚本发送给所述代理对象; 所述代理对象包括 查询模块,适于查询所述页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法; 执行模块,适于根据所述脚本执行方法执行所述脚本。
9.根据权利要求8所述的系统,所述运行于页面进程中的代理对象是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的; 所述运行于独立进程中的活动对象是在页面进程激活所述代理对象时,在独立于页面进程的独立进程中创建的; 在所述活动对象和代理对象中分别创建的所述一对通信窗口用于使活动对象和代理对象进行通信。
10.根据权利要求9所述的系统,运行于所述页面进程中的代理对象为多个,运行于所述独立进程中的活动对象为多个,所述代理对象和活动对象一一对应,所述代理对象的通信窗口和与所述代理对象对应的活动对象的通信窗口具有对应的属性,通过该一对通信窗口实现活动对象和代理对象的通信。
11.一种包括权利要求8至10任一项所述的进程间的脚本执行系统的浏览器。
12.—种进程间的脚本执行系统,所述系统包括运行于页面进程中的代理对象、运行于独立进程中的活动对象以及分别在所述代理对象和活动对象上创建的一对通信窗口 ;该系统适用于由活动对象执行页面进程中的脚本,所述活动对象和代理对象通过所述一对通信窗口进行通信; 所述代理对象包括 发送模块,适于通过通信窗口将脚本发送给所述活动对象; 调度标识获取模块,适于通过调用所述活动对象的调度接口,获取所述脚本中待执行方法的调度标识; 拦截模块,适于拦截页面进程中执行所述脚本中待执行方法的指令,将所述指令发送给所述活动对象; 所述活动对象包括 接收模块,适于接收所述代理对象中的发送模块发送的脚本以及拦截模块发送的指令; 执行模块,适于通过执行所述指令,执行所述脚本中待执行方法,而后将执行结果返回给代理对象。
13.根据权利要求12所述的系统,所述调度标识获取模块包括 调用模块,适于调用所述活动对象的调度接口,让所述活动对象执行获取所述脚本中待执行方法的调度标识的方法获取所述调度标识; 调度标识接收模块,适于接收所述活动对象通过通信窗口返回的所述调度标识。
14.根据权利要求12或13所述的系统,所述运行于页面进程中的代理对象是通过拦截浏览器的页面进程创建活动对象的过程,替换实际要创建的活动对象而创建的; 所述运行于独立进程中的活动对象是在页面进程激活所述代理对象时,在独立于浏览器页面进程的独立进程中创建的; 在所述活动对象和代理对象中分别创建的所述一对通信窗口用于使活动对象和代理对象进行通信。
15.根据权利要求14所述的系统,运行于所述页面进程中的代理对象为多个,运行于所述独立进程中的活动对象为多个,所述代理对象和活动对象一一对应,所述代理对象的通信窗口和与所述代理对象对应的活动对象的通信窗口具有对应的属性,通过该一对通信窗口实现活动对象和代理对象的通信。
16.一种包括权利要求12至15任一项所述的进程间的脚本执行系统的浏览器。
全文摘要
本发明公开了一种进程间的脚本执行方法、系统及浏览器。其中方法包括所述活动对象通过通信窗口将脚本发送给所述代理对象;所述代理对象查询所述页面进程中与脚本执行有关的接口,根据该接口获取脚本执行方法;所述代理对象根据所述脚本执行方法执行所述脚本。本发明实现了不同进程之间脚本的执行。
文档编号G06F9/54GK103019867SQ201210572598
公开日2013年4月3日 申请日期2012年12月25日 优先权日2012年12月25日
发明者李锦伟, 贺跃松, 陈志 , 付俣, 任寰 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1