《浏览器活动对象的创建方法、装置及浏览器的制作方法》由会员分享,可在线阅读,更多相关《浏览器活动对象的创建方法、装置及浏览器的制作方法(8页珍藏版)》请在金锄头文库上搜索。
1、浏览器活动对象的创建方法、装置及浏览器的制作方法专利名称:浏览器活动对象的创建方法、装置及浏览器的制作方法技术领域:本发明涉及计算机网络技术领域,具体涉及一种浏览器活动对象的创建方法、装置及浏览器。背景技术:ActiveX插件以前也叫做0LE(0bject Linking and Embedding,对象链接与嵌入)控件或OCX (OLE Control extension,对象类别扩充)控件,它是一些软件组件或对象,可以将其嵌入到WEB网页或其它应用程序中。当在浏览器中加载ActiveX插件时,也可称该ActiveX插件为活动对象。如果ActiveX插件被嵌入到网页中,在用户打开网页时,会自
2、动触发ActiveX插件的加载和播放。目前,很多网页上都嵌入有各种音视频插件,例如Flash插件,其内容可能是一些广告或用户并不关心的内容。只要用户打开网页就会在第一时间自动加载播放这些Flash内容。对于用户来说,这种不必要的插件播放造成了用户资源的浪费,例如浪费电力、带宽和系统资源,而且还延长了页面打开时间。现有技术提供了一种拦截Flash创建的方法,使用自带的swf,替换需要创建的Flash来实现,swf是Flash本地的一种支持矢量和点阵图形的动画文件格式。但是由于在页面的创建过程中可能需要与Flash进行交互,如果将Flash替换为swf,则因无法完成交互而无法创建Flash。当用户
3、需要重新播放Flash时,必须刷新页面,重新创建Flash才能进行播放。发明内容鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的浏览器活动对象的创建方法和相应的浏览器活动对象的创建装置及浏览器。根据本发明的一个方面,提供了一种浏览器活动对象的创建方法,包括在浏览器创建活动对象之前,阻止创建所述活动对象;根据用户发起的执行所述活动对象实现的功能的请求,继续创建所述活动对象,而后执行所述活动对象实现的功能。根据本发明的一个方面,提供了一种浏览器活动对象的创建装置,包括阻止模块,适于在浏览器创建活动对象之前,阻止创建所述活动对象;第一创建模块,适于根据用户发起的执行所述
4、活动对象实现的功能的请求,继续创建所述活动对象;执行模块,适于在所述第一创建模块创建所述活动对象之后,执行所述活动对象实现的功能。根据本发明的一方面,提供了一种包括上述浏览器活动对象的创建装置的浏览器。根据本发明的一个方面提供的方案,在浏览器的页面进程创建活动对象之前,默认阻止创建该活动对象;在用户发起执行活动对象实现的功能的请求后,继续创建活动对象,并在活动对象创建完成后,执行活动对象实现的功能。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求执行活动对象实现的功能时,无需刷新页面,实现了活动对象实现的功能的即点即执行。根据本发
5、明的另一个方面提供的方案,在浏览器创建活动对象之后,通过拦截线程消息循环中的定时消息或对活动对象的属性进行修改,阻止执行活动对象实现的功能;在用户发起执行活动对象实现的功能的请求后,通过取消拦截线程消息循环中的定时消息或对活动对象的属性进行再修改,继续执行活动对象实现的功能。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求执行活动对象实现的功能时,无需刷新页面,实现了活动对象实现的功能的即点即执行。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、
6、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了根据本发明第一个实施例的浏览器活动对象的创建方法的流程图;图2示出了根据本发明第二个实施例的浏览器活动对象的创建方法的流程图;图3示出了根据本发明第三个实施例的浏览器活动对象的创建方法的流程图;图4示出了根据本发明第四个实施例的浏览器活动对象的创建方法的流程图;图5示出了根据本发明第五个实施例的浏览器活动对象的创建装置
7、的结构框图;图6示出了根据本发明第六个实施例的浏览器活动对象的创建装置的结构框图;图7示出了根据本发明第七个实施例的浏览器活动对象的创建装置的结构框图;图8示出了根据本发明第八个实施例的浏览器活动对象的创建装置的结构框图。具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。在以下几个实施例中,以创建Flash插件为例进行说明,但本发明不仅限于是Flash插件,还可以是其它Act
8、iveX插件,如百度影音、QVOD (快播)等插件。图1示出了根据本发明第一个实施例的浏览器活动对象的创建方法100的流程图。如图1所示,方法100始于步骤S101,其中在浏览器的页面进程创建Flash插件之前,阻止创建该Flash插件。具体来说,在页面中有Flash插件的情况下,浏览器的页面进程通过CLSIDFromProgID方法获取Flash插件的类标识(CLSID)或者组件的字符串标识符(ProgID),按照现有流程,随后页面进程根据Flash插件的CLSID或ProgID查询注册表,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。但本方法与现有流程不同的
9、是,在获取CLSID或ProgID后,判断其是否为Flash插件的CLSID或ProgID,若是则停止执行查询注册表的动作,这样该Flash插件就不会被创建。需要说明的是,停止执行查询注册表的动作是阻止创建Flash插件的一种可选的实施方式,本方法也可在查询注册表确认已安装Flash插件之后,阻止进一步创建该Flash插件。通过本步骤,虽然页面中有Flash插件,但在页面打开后由于阻止创建该Flash插件,页面中并不会播放对应的Flash内容。随后,方法100进入步骤S102,其中根据用户发起的执行Flash插件功能的请求,继续创建Flash插件,在创建完成后执行Flash插件的功能,即播放对
10、应的Flash内容。在页面打开后,如果用户想要观看Flash内容,可以点击播放Flash,页面进程收到用户点击播放Flash的请求,不再阻止Flash插件的创建,继续创建Flash插件。以之前停止执行查询注册表的动作为例,页面进程根据Flash插件的CLSID或ProgID继续执行查询注册表的操作,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。在Flash插件创建完成后,按照默认的属性就会播放对应的Flash内容,由此实现了 Flash插件对应的Flash内容的即点即播。根据本实施例提供的浏览器活动对象的创建方法,在浏览器的页面进程创建Flash插件之前,默认阻
11、止创建该Flash插件;在用户发起播放Flash的请求后,继续创建Flash插件,并在Flash插件创建完成后,播放对应的Flash内容,由此实现了 Flash插件对应的Flash内容的即点即播。与现有技术相比,避免了不必要的插件播放造成用户资源的浪费,节省了电力、带宽和系统资源。同时,在用户有需要重新要求播放Flash内容时,无需刷新页面,实现了 Flash内容的即点即播。而且,本实施例提供的方法在加载页面时,默认阻止创建Flash插件,将有限的资源用于加载页面,提升了页面的加载速度。图2示出了根据本发明第二个实施例的浏览器活动对象的创建方法200的流程图。与上述第一个实施例不同的是,在用户
12、发起执行活动对象实现的功能的请求之后,通过在页面进程中创建代理对象,而在独立进程中继续创建活动对象,使得真实的Flash插件与页面进程分离。如图2所示,方法200始于步骤S201,在浏览器的页面进程创建Flash插件之前,阻止创建该Flash插件。在页面中有Flash插件的情况下,浏览器的页面进程通过 CLSIDFromProgID 方法获取 Flash 插件的 CLSID 或者 ProgID,在获取 CLSID 或 ProgID后,判断其是否为Flash插件的CLSID或ProgID,若是则停止执行查询注册表的动作,这样该Flash插件就不会被创建。停止执行查询注册表的动作是阻止创建Flas
13、h插件的一种可选的实施方式,本方法也可在查询注册表确认已安装Flash插件之后,阻止进一步创建该Flash插件。通过本步骤,虽然页面中有Flash插件,但在页面打开后由于阻止创建该Flash插件,页面中并不会播放对应的Flash内容。随后,方法200进入步骤S202,其中根据用户发起的执行Flash插件功能的请求,截获浏览器的页面进程创建Flash插件活动对象的操作,在浏览器的页面进程创建Flash插件代理对象替换实际要创建的Flash插件活动对象,该Flash插件代理对象在页面进程中运行。具体来说,在页面打开后,如果用户想要观看Flash内容,可以点击播放Flash,页面进程收到用户点击播放
14、Flash的请求,不再阻止Flash插件的创建,继续创建Flash插件。以之前停止执行查询注册表的动作为例,页面进程根据Flash插件的CLSID或ProgID继续执行查询注册表的操作,用以查看系统是否已安装该插件,若查看已安装该插件则进一步创建该Flash插件。这里,在页面进程准备进一步创建Flash插件时,拦截CoGetClassOb ject,创建Flash插件代理对象,该Flash插件代理对象包括一系列接口,包括IUnknown指针(本文也称为接口指针)将会调用的很多标准接口,例如IOleObject、IViewObject 等。然后在调用 IClassFactory 的 Create
15、Instance 时,将所创建的 Flash 插件代理对象返回给页面进程的IUnknown指针。随后,方法200进入步骤S203,其中创建独立于页面进程的独立进程,在该独立进程中,仓Il建Flash插件活动对象,这里的Flash插件活动对象才是真正的Flash插件。具体地,在页面进程激活Flash插件代理对象时,提取出该Flash插件的属性、URL、大小等相关信息,然后创建一个独立进程。具体来说,创建一个文件(document),在其中插入一个对象(object),该独立进程调用CoGetClassObject,拦截该CoGetClassObject,创建一个Flash插件活动对象。该Flas
16、h插件活动对象包括一系列的接口,包括IUnknown指针将会调用的很多标准接口,例如IOleObject、IViewObject等。然后在调用IClassFactory的CreateInstance时,将所创建的Flash插件活动对象返回给独立进程的IUnknown指针。接着,在Flash插件代理对象和Flash插件活动对象中分别创建与插件对象关联的窗口,用于使Flash插件代理对象和Flash插件活动对象进行通信。通过这两个窗口,两个对象可以针对Flash的大小、焦点、刷新、脚本以及其它信息进行交互。随后,方法200进入步骤S204,通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,和/或,Flash插件代理对象与独立进程通信被Flash插件活动对象调用,执行Flash插件活动对象实现的功能。在Flash插件活动对象创建完成后,根据用户点击播放Flash的请求,通过Flash插件代理对象与独立进程通信调用Flash插件活动对象,使Flash插件活动对象播放对应的Flash内容,由此实现了 Flash插件对应的Flash内容的即