一种使用Ocx扩展webkit内核应用的方法与流程

文档序号:18795986发布日期:2019-09-29 19:39阅读:963来源:国知局
一种使用Ocx扩展webkit内核应用的方法与流程

本发明涉及一种浏览器应用扩展技术,特别是涉及webkit内核的应用。



背景技术:

ocx:objectlinkingandembeddingcontrolextension它是微软在组件和ole技术的基础上制定的一种软件框架。在windows桌面应用和针对ie浏览器开发的web应用中得到广泛的使用。在ie浏览器中,页面可以直接调用ocx中方法,以及设置ocx中的事件回调。

webkit内核是一种开源的浏览器引擎,苹果公司的safari浏览器和chrome浏览器等都都是在webkit内核的基础上开发而来。相比于ie浏览器使用trident内核而言,webkit支持的html标准更多,运行效率更高,更受用户的喜爱。

webkit内核应用指的是在webkit内核的基础上二次开发出来的应用程序。所有具有web浏览功能的应用都属于webkit内核应用。

在windows系统上进行集成浏览器应用的开发时,旧的解决方案是直接使用系统支持的trident内核控件,然后开发供页面使用ocx插件进行功能扩展。然而,在从集成了trident内核的浏览器应用向集成webkit内核的浏览器应用转换时,是无法直接使用原有的ocx扩展组件的。因为在webkit内核中不支持html使用ocx扩展。

在火狐浏览器中原生支持npapi插件扩展技术,通过npapi插件规范就可以对浏览器的功能进行扩展。



技术实现要素:

本发明提供一种直接加载ocx组件,然后供webkit的html页面直接使用,以便对webkit内核进行扩展的方法。

本发明采用以下技术方案:

一种使用ocx扩展webkit内核应用的方法,包括:

建立至少一个ocx组件;

建立宿主程序,所述宿主程序为通过接口与webkit内核、ocx组件进行信息交互的组件框架;所述宿主程序包括ocx代理类体系和js对象代理体系,所述ocx代理类体系包括至少一个ocx代理类,每个ocx代理类对应连接一个ocx组件,每个ocx代理类对应所述js对象体系中的一个js对象;

在webkit内核中添加宿主程序;

宿主程序在webkit内核中添加js对象代理体系中的一个js对象;

页面通过该js对象向宿主程序发送调用请求;

宿主程序接收到调用请求后,将调用请求发送给js对象对应的ocx代理类,通过ocx代理类发送给对应的ocx组件执行相应功能;

ocx组件执行相应功能后将执行结果返回给宿主程序,宿主程序将执行结果返回给页面。

ocx代理类体系中每个ocx代理类都继承自同一个基类。

所述宿主程序在webkit内核中添加js对象代理体系中的一个js对象后,通过页面js对象调用ocx组件的方法包括;

程序初始化时,通过webkit内核与宿主程序的接口向webkit内核中添加内置js对象,,页面能够直接使用该js对象的功能;

页面通过该js对象向宿主程序发送调用请求,ocx代理类体系中的ocx代理类收到调用请求后调用ocx组件执行对应的扩展功能;

ocx组件执行扩展功能的结果传递给上层的页面。

所述ocx组件执行对应的扩展功能后,ocx组件执行扩展功能的结果传递给上层的页面,或者在ocx组件处理中响应页面js对象的事件回调;

所述在ocx组件处理中响应页面js对象的事件回调包括:

宿主程序提供一个注册方法并注册至webkit内核;

在页面调用注册方法注册时,对页面的方法保存起来在事件发生时调用对应的回调函数;

ocx组件中的事件触发时,先调用宿主程序提供的事件响应函数,在宿主程序的事件响应函数中触发页面设置的事件回调。

存储介质,所述存储介质内部可执行的计算机程序,所述计算机程序被处理器执行时实现上述的方法。

本发明的有益效果:本发明提供一种框架,可以通过该框架加载ocx,然后供html页面直接使用。

附图说明

图1为本发明的信息流向图。

图2为本发明的框架结构图。

图3为页面js调用ocx扩展的流程图。

图4为ocx中触发页面js事件回调方法的流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细说明。

在现有的火狐浏览器中原生支持npapi插件扩展技术,通过npapi插件规范就可以对浏览器的功能进行扩展。但是本发明提出区别于npapi、ppapi(谷歌接口规范)的另外一种webkit内核浏览器应用扩展技术规范,按照此方法添加包括ocx插件、扩展js对象等模块即可进行功能扩展。

本发明提供一种使用ocx扩展webkit内核应用的方法,该方法在集成webkit内核浏览器应用的程序中,通过宿主程序,实现在页面内调用ocx组件。其中,宿主程序作为承载webkit内核和ocx组件的载体,负责处理页面上的js调用和调用ocx组件中的接口,以及实现消息的同步处理,从而实现通过ocx组件扩展webkit内核应用的目的。为了增强此方法的易用性,本方法通过一种ocx组件代理框架来对ocx组件进行管理,以便进行功能的扩展操作。

具体来说,本发明包括以下步骤:

(1)建立至少一个ocx组件;

(2)建立宿主程序;

(3)在webkit内核中添加宿主程序;

(4)宿主程序在webkit内核中添加js对象代理体系中的一个js对象;

(5)页面通过该js对象向宿主程序发送调用请求;

(6)宿主程序接收到调用请求后,将调用请求发送给js对象对应的ocx代理类,通过ocx代理类发送给对应的ocx组件执行相应功能;

(7)ocx组件执行相应功能后将执行结果返回给宿主程序,宿主程序将执行结果返回给页面。

上述的(2)中,宿主程序为通过接口与webkit内核、ocx组件进行信息交互的组件框架;所述宿主程序包括ocx代理类体系和js对象代理体系,所述ocx代理类体系包括至少一个ocx代理类,每个ocx代理类对应连接一个ocx组件,每个ocx代理类对应所述js对象体系中的一个js对象;所述ocx代理类体系的ocx代理类和js对象代理体系中的js对象均包括接口,如图1所示,ocx代理类体系中的ocx代理类为一种ocx代理程序,与ocx组件的接口进行信息交互和数据返回;而js对象代理体系中的js对象,包括js接口程序,能够扩展浏览器内湖对象,接收js对象的调用。

宿主程序采用win32或mfc开发,作为连接webkit内核和ocx插件的桥梁。通过宿主程序的中转,webkit内核中的html页面就可以和ocx插件建立起连接。ocx插件从根本上来看是通过宿主程序进行管理的,也只会与宿主程序进行交互。宿主程序中通过webkit内核提供的接口添加两类对象:其一是供页面调用的内置js对象,内置js对象与ocx插件一一对应;其二是注册函数,此函数供页面使用,页面可以把自己的函数注册到宿主程序中,供宿主程序使用。

上述的(6)中,宿主进程在接收到页面js对象的调用请求后,先判断该js对象的调用请求是否是对ocx组件接口的调用,如果是对ocx组件接口的调用,就把调用请求发送给ocx组件的代理模块-即ocx代理类,并等待ocx代理类的返回结果。如果不是对组件接口的调用,则直接进行处理后返回。

如图1~4为本发明的具体实施方式示例图。

如图1所示的信息流中,本发明使用宿主程序作为连接webkit内核和ocx组件的桥梁,即接收两端发出的请求,同时也可以在ocx组件和webkit内核进行响应。同时使用ocx组件和webkit内核中的对象继承框架来实现功能的扩展。当webkit中的页面js调用ocx组件中的方法时,首先通过宿主程序的js接口,向宿主程序发送调用请求,宿主程序接收到请求后,通过ocx代理类调用ocx组件中的接口,同时等待接口的返回,在接口调用结束后把返回的结果传递给js对象,页面能够接收到。同时,ocx里面也可以响应webkit页面中设置的事件回调。

如图2所示为本发明的框架结构图,每一个ocx代理类都对应于一个ocx组件,并且所有的ocx代理类都继承自同一个基类,在页面js功能调用上,则有js对象代理体系,每一个ocx组件都有一个对应的js对象代理体系中的js对象,在添加ocx组件插件时,只需要从上一层的插件类和js扩展对象类中继承新的对象即可,删除插件也只需要删除对应的插件类。上述代理框架的结构方便进行组件的添加和删除操作。

如图3所示,为页面js调用ocx函数进行功能扩展的流程。

宿主程序中在程序初始化时,在程序初始化时,需要先在宿主程序中定义一个js对象,并把它注册到webkit内核扩展中,这样页面js就能调用这个js对象里面的方法,方法体可以在本地注册。在方法体的实现中,可以向browser进程-即ocx组件的代理类发送对应的调用请求,browser进程-即ocx组件的代理类同样是宿主进程,它以子进程的方式启动。browser进程加载ocx组件,并创建对应的对象,在接收到调用请求之后就调用ocx组件中的方法,并将调用的结果返回给宿主进程,宿主程序通过webkit内核的接口把返回值返回给页面js对象。也可以按照图4所述的方法响应页面设置的事件回调。

如图4所示,为在ocx的事件处理中响应页面js对象的事件回调的流程,即ocx方法调用页面js对象的流程。

为了能让宿主程序调用页面上定义的方法,宿主程序需要提供一个注册方法,且吧注册方法注册至webkit内核中,页面能够通过调用注册方法注册,页面通过调用注册方法注册时,就把页面的方法保存起来,供以后使用。ocx组件中的回调触发时,会先调用browser进程中提供的回调函数,在browser进程的回调函数中向宿主程序发送页面js调用请求,此时,宿主程序就可以根据请求内容调用页面之前注册的方法了。

也就是说,宿主程序提供一个注册方法,在页面调用注册方法注册时把页面的方法保存起来,该页面的方法与事件回调的功能对应,从而在事件发生时能够调用与保存的方法对应的回调函数。ocx组件中的事件触发时,就会先调用宿主程序提供的事件响应函数,通过该事件响应函数触发回调函数,从而调用回调函数来实现事件回调的功能,在宿主程序的响应函数中就可以触发页面设置的事件回调,从而实现在页面中响应ocx事件回调的功能。

作为一种具体的实施例,下述以添加监控注册表数据变化的功能说明本发明的实现过程:

(1)采用现有的软件开发ocx组件,该ocx组件具有向注册表中写数据和监控组册表中数据的变化的功能,同时能够通知上层页面;

(2)建立宿主程序并加载至webkit内核中,webkit内核与素质程序具有接口,通过webkit内核接口在宿主程序中添加一个函数,页面js在打开时调用这个函数把上面的事件处理操作发送到宿主程序中;

(3)添加内置js对象,其中js对象需要提供和ocx一样的功能接口。

(4)在宿主程序中创建ocx组件对象,设置步骤2所需要的事件回调,并通过代理来管理ocx组件。

(5)页面通过内置js对象通知宿主程序去执行ocx组件的注册表监控功能,而宿主程序则可以通过代理去执行此功能,当注册表中数据发生变化时,ocx中的事件机制会自动触发宿主程序中设定的事件回调,在宿主程序的事件回调中再触发页面设定的事件回调,如图4所示的步骤,页面上就可以执行相应的操作。从而实现了对webkit内核功能的扩展。

在本说明书的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明揭露的范围内,可轻易想到的变化或者替换,都应该涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1