一种基于Webkit内核提供网页浏览的方法及装置的制作方法

文档序号:6369167阅读:199来源:国知局
专利名称:一种基于Webkit 内核提供网页浏览的方法及装置的制作方法
技术领域
本申请涉及网页技术,特别是涉及一种基于Webkit内核提供网页浏览的方法及
>J-U装直。
背景技术
网页浏览器在全球广泛使用,是一种用于访问互联网获取资讯的应用软件。随着技术的进步和发展,越来越多其他类型的软件,如即时通讯软件、下载软件、甚至输入法等,都开始借助和使用网页浏览器的页面访问能力,实现其软件的某些功能,提供更好的用户 体验。目前的实现方式,大多使用微软提供的Webbrowser对象,通过在进程内实现一个Webbrowser COM对象来访问页面,实现相关功能。这一技术实现方式存在以下弊端,例如Webbrowser是一个安全性较弱的浏览器控件,容易引发安全问题。

发明内容
本申请提供了一种基于Webkit内核提供网页浏览的方法及装置,以解决浏览器中使用Webbrowser内核控件而带来的安全性弱的问题。为了解决上述问题,本申请公开了一种基于Webkit内核提供网页浏览的方法,包括设置一 Webkit内核的页面对象导出接口 ;在第一独立进程中启动Webkit内核;在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。优选地,所述调用所述页面对象导出接口创建基于Webkit内核的页面对象,包括获得所述页面对象导出接口提供的工厂方法;调用所述工厂方法创建工厂对象;调用所述工厂对象创建基于Webkit内核的页面对象。优选地,所述通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面内容加载,包括通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口;在该页面窗口中进行基于Webkit内核的页面内容加载。优选地,在第二独立进程中进行所述页面内容加载,
所述加载包括根据接收到的http请求获取页面内容;对获取到的页面内容进行解析;对解析结果执行js操作;根据js操作结果建立dom树;对dom树进行渲染和展现。优选地,所述页面浏览操作包括
页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。优选地,所述通过所述页面对象调用所述独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作,包括通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作;和/或,通过所述页面对象提供的Imposition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动;和/或,通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容;和/或,通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容;和/或,通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作;和/或,通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作;和/或,通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。优选地,所述通过所述页面对象调用所述第一独立进程中的Weblkit内核,包括构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法;通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。优选地,所述设置一 Webkit内核的页面对象导出接口,包括通过动态链接库提供Webkit内核的页面对象导出接口。优选地,调用所述页面对象导出接口之前,还包括访问注册表,查找注册表中所述动态链接库的存储路径;从所述存储路径加载所述动态链接库。优选地,还包括Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。优选地,多个第二独立进程从同一存储路径加载同一所述动态链接库。
本申请还提供了一种基于Webkit内核提供网页浏览的装置,包括接口导出模块,用于设置一 Webkit内核的页面对象导出接口 ;内核启动模块,用于在 第一独立进程中启动Webkit内核;第一调用模块,用于在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并第二调用模块,用于通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。优选地,所述第一调用模块包括工厂方法获取子模块,用于获得所述页面对象导出接口提供的工厂方法;工厂对象创建子模块,用于调用所述工厂方法创建工厂对象;页面对象创建子模块,用于调用所述工厂对象创建基于Webkit内核的页面对象。优选地,所述第二调用模块通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口,并在该页面窗口中进行基于Webkit内核的页面内容加载。优选地,在第二独立进程中进行所述页面内容加载,所述加载包括根据接收到的http请求获取页面内容;对获取到的页面内容进行解析;对解析结果执行js操作;根据js操作结果建立dom树;对dom树进行渲染和展现。优选地,所述页面浏览操作包括页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。优选地,所述第二调用模块包括导航调用子模块,用于通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作;和/或,移动调用子模块,用于通过所述页面对象提供的R印osition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动;和/或,停止调用子模块,用于通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容; 和/或,刷新调用子模块,用于通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容;和/或,页面后退调用子模块,用于通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作;和/或,页面前进调用子模块,用于通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作;和/或,销毁调用子模块,用于通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。
优选地,所述第二调用模块包括构造子模块,用于构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;参数赋值子模块,用于将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法;页面创建子模块,用于通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。优选地,所述接口导出模块通过动态链接库提供Webk it内核的页面对象导出接□。优选地,还包括路径查找模块,用于访问注册表,查找注册表中所述动态链接库的存储路径;加载模块,用于从所述存储路径加载所述动态链接库。优选地,还包括更新模块,用于Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。优选地,多个第二独立进程通过从同一存储路径加载同一所述动态链接库。与现有技术相比,本申请包括以下优点本申请提出了一种跨进程使用webkit核心实现网页浏览的方法,能很好地解决浏览器中的Webtoowser内核版本落后、安全性薄弱、不支持非微软平台的问题,和直接使用webkit核心导致的技术门槛高、升级困难、安装包过大等问题。首先,本申请为WebKit内核导出WebAppTabWrapper对象的接口,第三方软件获得WebAppTabWrapper对象后,通过调用该对象的Create方法,通知webkit浏览器创建一个新的页面。网页浏览中进行的http请求,解析返回数据,执行js,建立dom树,完成最后渲染等具体工作都对第三方软件不可见,简化了第三方软件的技术使用难度。第三方软件和真正的页面访问、解析、渲染模块工作在不同进程,进程间隔离很好的保护了第三方软件不受页面不安全因素的影响。因此,本申请能很好地解决浏览器中使用Webtoowser内核而带来的安全性薄弱、容易导致用户安全的问题。其次,Webkit核心的升级和bug修复等,由dll服务的升级检查功能完成。在进行新版本升级安装时不影响旧版本的运行使用,对第三方软件完全不可见。第三方软件通过访问注册表的某个项目获取新的服务版本dll路径,加载后使用。并且,新旧版本可以同时使用。因此,本申请能很好地解决浏览器中的Webbrowser内核版本落后的问题。而且,本申请可以简化第三方软件在windows平台和非windows平台使用网页浏览增加软件功能的开发难度,使任意第三方软件可以使用本发明提供的网页访问服务,轻易的访问页面,增强软件用户体验。当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。


图I是本申请实施例所述一种基于webkit核心的跨进程网页浏览方法的流程图2是本申请另一实施例所述基于webkit核心的跨进程网页浏览方法的流程图;图3是本申请实施例所述一种基于webkit核心的跨进程网页浏览装置的结构图;图4是本申请另一实施例所述一种基于webkit核心的跨进程网页浏览装置的结构图;图5是本申请另一实施例所述基于webkit核心的跨进程网页浏览方法的流程图;图6是本申请另一实施例所述一种基于webkit核心的跨进程网页浏览装置的结构图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。目前,越来越多其他类型的第三方软件,如即时通讯软件、下载软件、甚至输入法等,都开始借助和使用网页浏览器的页面访问能力,实现其软件的某些功能,提供更好的用户体验。微软的IE浏览器提供的Webbrowser对象存在较多的弊端,例如Webbrowser对象的版本过老限制了很多新的页面技术的使用和展现;Webbrowser是一个安全性较弱的浏览器核心,容易引发安全问题;Webtoowser容易被各种流氓软件安装插件,注入代码,引发很多使用问题,比如关闭了 fash和java运行,导致相关功能失效。在第三方软件实现网页浏览的过程中,为了解决IE的Webbrowser内核存在的上述各种问题,本申请提供了一种使用webkit实现网页浏览的方法。其中,所述webkit是Chrome浏览器的核心,webkit是一个开放源代码的浏览器引擎(web browser engine)。但是,如果在第三方软件中直接使用webkit核心实现网页浏览,存在以下缺陷webkit核心接口复杂,技术门槛高,增加了软件利用其实现页面浏览功能的技术门槛;webkit核心代码较多,dll (动态链接库)较大,增加了使用其软件的体积;浏览器版本更新迅速,直接包含webkit核心无法做到快速使用最新技术,规避已知安全问题。基于此,本申请没有直接使用webkit核心,提供了一种跨进程的页面浏览服务dll,任何第三方软件可以在安装了此种dll服务的系统上获得页面浏览能力,从而简化了使用webkit渲染页面的技术门槛和复杂度。Webkit作为一个完整的浏览器内核,只负责完成html解析和渲染工作,其它工作如网络连接请求、js解析、外围包装等,都需要第三方软件实现后,webkit才能正常工作。而实现一个良好的http协议栈和js解析器难度巨大,工作复杂。本申请中的这种页面浏览的dll服务可以理解为一个代理,代理封装了网络连接请求、js解析、外围包装等工作,从而将这些用户不关心又复杂的部分对用户进行了屏蔽;并且,代理还封装了简单的接口来调用几个基本的webkit浏览器操作。第三方软件可以通过这种dll服务实现与webkit核心的通信,用户只需给出url和一个用于承载页面的窗口句柄,就可以得到一个渲染完成的网页。由于网页浏览过程中的很多工作都由dll服务完成,因此简化了第三方软件的开发。下面通过实施例对本申请所述方法的实现流程进行详细说明。参照图1,是本申请实施例所述一种基于webkit核心的跨进程网页浏览方法的流程图。步骤101,通过自定义接口加载动态链接库;所述自定义接口包括外部接口和内部接口,通过外部接口可以加载动态链接库。动态链接库(dll服务)提供给第三方软件使用的是外部接口,第三方软件实现这些简单的外部接口后,就可以与动态链接库通信。动态链接库还提供了 Webkit内核的页面对象导出接口,这些内部接口为webkit 内核导出的类似IE的Webbrowser对象的接口,但具体的接口数目和使用复杂度要大大低于IE的Webbrowser。而且,传统方法包装webkit需要实现数百个接口,但本申请实施例中第三方软件所需实现的接口数目非常少,但几个基本的浏览器操作都已经包括在其中。第三方软件实现所述数目较少的自定义接口后,通过自定义接口加载动态链接库dlI,具体的加载方法如下通过自定义接口访问注册表;查找注册表中所述动态链接库dll的存储路径;从所述存储路径加载所述动态链接库dll。步骤102,调用所述动态链接库来创建页面对象;通过调用动态链接库提供的内部接口,就可以实现与Webkit内核的通信。其中,使用工厂模式来创建页面对象。工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。具体子步骤如下子步骤I,调用所述动态链接库来获得工厂方法;子步骤2,调用所述工厂方法创建工厂对象;子步骤3,调用所述工厂对象创建页面对象。步骤103,通过调用所述页面对象中的页面创建方法,通知webkit浏览器创建页面窗口,并完成该页面窗口中页面内容的渲染和展现。具体子步骤如下子步骤1,构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;子步骤2,将填充后的参数对象作为参数值传递给所述页面对象中的页面创建方法;子步骤3,通过调用参数赋值后的页面创建方法,通知webkit浏览器创建页面窗口,并完成该页面窗口中页面内容的渲染和展现。页面对象中提供了页面创建方法,该方法中设有参数,参数赋值为目标访问的网址和窗口句柄后,通过调用该方法即可与webkit内核通信,参数值传给webkit内核,webkit内核按照参数值访问目标网址,并创建页面窗口,完成该页面窗口中页面内容的渲染和展现。
最后,浏览器的相关回调还可通过对应的函数调用通知第三方软件。下面通过一个具体的例子详细解释上述内容。接口的内容和用法如下提供一个工厂方法,供第三方软件调用extern" C" {DLL_INTERFACE WebAppFactory^GetffebAppFactory();};第三方软件可通过LoadLibrary函数加载dl I服务(动态链接库),并通过GetProcAddress函数获得工厂方法GetWebAppFactory,并创建工厂对象WebAppFactory,进而得到一个页面对象WebAppTabWrapper,其接口如下
class WebAppTaWrapper {public:
virtual HKESULT STDMETHODCALLTYPE Create(WebApj)CreateParams const &) = 0; virtual HKESULT STDMETHODCALLTYPE DestroyO = 0; virtual HRESULT STDMETHODCALLTYPE Navigate(char const *) = 0;virtual HRESULT STDMETHODCALLTYPE Reposition (
WebAppRepositionParams const &) = 0; virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0; virtual HRESULT STDMETHODCALLTYPE Reload( void) = 0; virtual HRESULT STDMETHODCALLTYPE GoBack( void) = 0; virtual HKESULT STDMETHODCALLTYPE GoForward( void) = 0; virtual "WebAppTabfrapper () {}
};第三方软件获得WebAppTabWrapper对象后,通过调用该对象提供的Create方法,通知webkit内核的网页浏览服务创建一个新的页面,并调用Navigate方法通知服务进行导航操作,Stop、Reload、GoBack、GoForward则提供基本的页面前进后退、停止加载和刷新功能。第三方软件在不再需要浏览页面时,通过调用Destroy方法销毁页面对象。具体的,还可以包括以下步骤通过调用所述页面对象中的Navigate方法,通知webkit浏览器在该页面窗口中进行页面跳转操作。例如,新创建的页面窗口中,最初访问目标网址显示的欢迎页面的内容,然后通过调用Navigate方法,可以从欢迎页跳转到真正的主页,但是不再创建新的页面窗口,只在同一个页面窗口中进行页面内容的跳转。
通过调用所述页面对象中的Stop方法,通知webkit浏览器停止该页面窗口中页面内容的渲染和展现。通过调用所述页面对象中的Reload方法,通知webkit浏览器刷新该页面窗口中的页面内容。通过调用所述页面对象中的GoBack方法,通知webkit浏览器在该页面窗口中进行页面后退操作;通过调用所述页面对象中的GoForward方法,通知webkit浏览器在该页面窗口中进行页面前进操作。通过调用所述页面对象中的Destroy方法,通知webkit浏览器销毁该页面对象。 当第三方软件实现如上接口后,webkit浏览器的相关回调将通过对应的函数调用通知第三方软件。具体的工作流程如图2所示参照图2,是本申请另一实施例所述基于webkit核心的跨进程网页浏览方法的流程图。步骤201,第三方软件实现WebAppUIDelegate接口 ;所述WebAppUIDelegate接口是dl I服务提供给第三方软件使用的外部接口,作为一个较佳实施例,该接口具体地提供了以下接口函数
class WebAppUIDelegate { public:
virtual void OnHandleAccelerator() = 0; virtual void OnOpenURL() = 0; virtual void OnTitleChangeO = 0; virtual void OnStatusTextChange() = 0; virtual void OnNavigateComplete2() = 0; virtual void OnNavigateError() = 0; virtual void OnQuit() = 0; virtual void OnUpdateTargetUrl() = 0; virtual void OnGetCurrentUrlRsp() = 0; virtual void OnCrashReport() = 0; virtual, void OnReportMainWindowO = 0; virtual, void OnWebAppJsCa11 () = 0;
};
各接口函数的说明如下OnHandleAccelerator函数提供快捷键回调方法,通知第三方软件用户按下了一组快捷键;OnOpenURL函数提供打开页面回调方法,通知第三方软件用户尝试开启一个新页面,第三方软件可以允许或禁止;OnTitleChange函数提供title (标题)改变回调方法,通知第三方软件当前的窗口 title文字发生了改变;OnStatusTextChange函数提供状态栏改变回调方法,通知第三方软件当前的窗口状态栏文字发生了改变;0nNavigateComplete2函数提供导航完毕回调方法,通知第三方软件导航完成;
OnNavigateError函数提供导航错误回调方法,通知第三方软件导航错误;OnQuit函数提供退出回调方法,通知第三方软件用户关闭了当前页面或者渲染服务因某种原因退出了;OnUpdateTargetUrl函数提供目标url更新回调方法,通知第三方软件当前的目标url发生了改变;OnGetCurrentUrlRsp函数提供获取当前url回调方法,通知第三方软件当前的url ;OnCrashReport函数提供崩溃回调方法,通知第三方软件页面访问服务发生了崩溃;OnReportMainffindow函数提供主窗口回调方法,通知第三方软件当前页面的主窗
n ;OnWebAppJsCalI函数提供js回调方法,通知第三方软件,页面请求执行一个外部js调用。步骤202,通过约定的注册表项目,找到Webapp_proxy. dll所在的路径;其中,所述Webapp_proxy. dll是动态链接库,即dll服务;步骤203,加载 Webapp_proxy. dll ;如果加载成功,即继续步骤204 ;如果加载失败,则转到异常处理;步骤204,使用 GetProcAddress 函数得到 GetWebAppFactory 方法;其中,所述GetWebAppFactory方法为工厂方法;步骤205,调用GetWebAppFactory方法创建一个工厂对象;创建的工厂对象为WebAppFactory ;步骤206,调用工厂对象的CreateWebAppTab方法创建一个标签页对象;其中,所述标签页对象为WebAppTaWrapper ;步骤207,构造一个WebAppCreateParams对象,并填充好目标的url和用于容纳页面的窗口句柄,然后用这个对象作为参数调用标签页对象的Create方法,通知webkit内核创建页面;其中,所述WebAppCreateParams对象为参数对象;webkit内核根据目标的url和窗口句柄创建一个新的页面窗口,并完成页面的渲染和展现;
步骤208,如果机器的网络环境正常且url正确,一个新的页面窗口将成为WebAppCreateParams的子窗口,并完成页面的渲染和展现工作,用户可以正常地和这个页面交互。基于图2的流程,多个第三方软件可以同时加载此接口 dll,完成页面浏览,彼此互不影响,互不可见。Webkit核心的升级和bug修复等,由dll服务的升级检查功能完成。在进行新版本升级安装时不影响旧版本的运行使用,对第三方软件完全不可见。第三方软件通过访问注册表的某个项目获取新的服务版本dll路径,加载后使用。并且,新旧版本可以同时使用。综上所述,本申请实施例为WebKit内核导出WebAppTabWrapper对象的接口,第三方软件获得WebAppTabWrapper对象后,通过调用该对象的Create方法,通知webkit浏览器创建一个新的页面。网页浏览中进行的http请求,解析返回数据,执行js,建立dom树,完成最后渲染等具体工作都对第三方软件不可见,简化了第三方软件的技术使用难度。第三方软件和真正的页面访问、解析、渲染模块工作在不同进程,即实现了跨进程的访问,进程间隔离很好的保护了第三方软件不受页面不安全因素的影响。其中,所述“进程间隔离”包含两层含义;其一,dll服务与webkit内核相互隔离,分别工作在不同进程;其二,第三方软件之间相互隔离,每个第三方软件都可以独立加载dll服务来完成页面浏览,相互之间互不干扰。而且,基于webkit核心的网页访问服务不受限于微软windows操作系统的版本及操作系统本身,在非windows平台,也能以与上文类似的方式工作,简化了第三方软件进行跨平台版本开发的难度。总之,本申请提出了一种跨进程使用webkit核心实现网页浏览的方法,能很好地解决IE的Webbrowser内核版本落后、安全性薄弱、不支持非微软平台的问题,和直接使用w e b k i t核心导致的技术门滥高、升级困难、安装包过大等问题。并且,可以简化第三方软件在windows平台和非windows平台使用网页浏览增加软件功能的开发难度,使任意第三方软件可以使用本发明提供的网页访问服务,轻易的访问页面,增强软件用户体验。需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必需的。基于上述方法实施例的说明,本申请还提供了相应的网页浏览装置实施例。参照图3,是本申请实施例所述一种基于webkit核心的跨进程网页浏览装置的结构图。 所述网页浏览装置可以包括以下接口和模块自定义接口10和加载模块20,所述加载模块20通过自定义接口 10加载动态链接库;第一调用模块30,用于调用所述动态链接库来创建页面对象;第二调用模块40,用于通过调用所述页面对象中的页面创建方法,通知webkit浏览器创建页面窗口,并完成该页面窗口中页面内容的渲染和展现。其中,所述第一调用模块30具体可以包括以下子模块工厂方法获取子模块,用于调用所述动态链接库来获得工厂方法;工厂对象创建子模块,用于调用所述工厂方法创建工厂对象;页面对象创建子模块,用于调用所述工厂对象创建页面对象。其中,所述第二调用模块40具体可以包括以下子模块构造子模块,用于构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;参数赋值子模块,用于将填充后的参数对象作为参数值传递给所述页面对象中的页面创建方法;
·
页面创建子模块,用于通过调用参数赋值后的页面创建方法,通知webkit浏览器创建页面窗口,并完成该页面窗口中页面内容的渲染和展现。其中,所述加载模块20具体可以包括以下子模块注册表访问子模块,用于通过自定义接口访问注册表;路径查找子模块,用于查找注册表中所述动态链接库的存储路径;加载子模块,用于从所述存储路径加载所述动态链接库。在另一实施例中,如图4所示优选地,所述装置还可以包括导航调用模块50,用于通过调用所述页面对象中的Navigate方法,通知webkit浏览器在该页面窗口中进行页面跳转操作。优选地,所述装置还可以包括停止调用模块60,用于通过调用所述页面对象中的Stop方法,通知webkit浏览器停止该页面窗口中页面内容的渲染和展现。优选地,所述装置还可以包括刷新调用模块70,用于通过调用所述页面对象中的Reload方法,通知webkit浏览器刷新该页面窗口中的页面内容。优选地,所述装置还可以包括页面后退调用模块80,用于通过调用所述页面对象中的GoBack方法,通知webkit浏览器在该页面窗口中进行页面后退操作;页面前进调用模块90,用于通过调用所述页面对象中的GoForward方法,通知webkit浏览器在该页面窗口中进行页面前进操作。优选地,所述装置还可以包括销毁调用模块100,用于通过调用所述页面对象中的Destroy方法,通知webkit浏览器销毁该页面对象。对于上述图3和图4所示的网页浏览装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图I和图2所示方法实施例的部分说明即可。基于以上内容,本申请还提供了另外一种基于Webkit内核提供网页浏览的方法和装置的实施例,下面分别通过图5和图6进行说明。参照图5所示,是本申请另一实施例所述基于webkit核心的跨进程网页浏览方法的流程图。步骤501,设置一 Webkit内核的页面对象导出接口 ;步骤502,在第一独立进程中启动Webkit内核;步骤503,在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;所述第一独立进程和第二独立进程是两个进程,换而言之,页面的浏览和Webkit内核的运行相互独立,互不影响。具体的,调用所述页面对象导出接口创建基于Webkit内核的页面对象,可包括以下子步骤子步骤1,获得所述页面对象导出接口提供的工厂方法;子步骤2,调用所述工厂方法创建工厂对象;子步骤3,调用所述工厂对象创建基于Webkit内核的页面对象。步骤504,通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。所述第二独立进程可通过调用所述页面对象实现与第一独立进程中Webkit内核的通信,具体的,所述通过所述页面对象调用所述第一独立进程中的Weblkit内核,可包括以下子步骤子步骤1,构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;子步骤2,将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法;子步骤3,通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。第二独立进程调用Weblkit内核可实现页面浏览操作和页面内容加载,下面分别详细说明具体的页面内容加载过程,以及都有哪些页面浏览操作。I、页面内容加载具体的,通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面内容加载,具体可包括以下处理通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口;在该页面窗口中进行基于Webkit内核的页面内容加载。进一步的,在第二独立进程中进行所述页面内容加载;并且,所述加载包括以下处理步骤I)根据接收到的http请求获取页面内容;2)对获取到的页面内容进行解析;3)对解析结果执行js操作;4)根据js操作结果建立dom树;5)对dom树进行渲染和展现。

2、页面浏览操作所述页面浏览操作可包括
页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。进一步地对于页面跳转操作,可通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作;对于页面窗口移动操作,可通过所述页面对象提供的Reposition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动;对于页面停止加载操作,可通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容;
对于页面刷新操作,可通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容;对于页面的前进操作,可通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作;对于页面的后退操作,可通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作;对于页面销毁操作,可通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。基于图5实施例的内容,优选地,可通过动态链接库(dll服务)提供Webkit内核的页面对象导出接口,该导出接口是动态链接库提供的用于与Webkit内核通信的内部接口。此外,所述动态链接库还提供了用于与第三方软件通信的外部接口。进一步地,在第二独立进程调用所述页面对象导出接口创建页面对象之前,还可以包括以下处理访问注册表,查找注册表中所述动态链接库的存储路径;从所述存储路径加载所述动态链接库。优选地,还可包括以下处理Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。而且,多个第二独立进程可从同一存储路径加载同一所述动态链接库。即在进行新版本升级安装时不影响旧版本的运行使用,新旧版本可以同时使用,对第三方软件完全不可见。并且,多个第三方软件可同时实现基于Webkit内核的网页浏览。参照图6所示,是本申请另一实施例所述一种基于webkit核心的跨进程网页浏览装置的结构图。所述基于Webkit内核提供网页浏览的装置,具体可包括以下模块接口导出模块61,用于设置一 Webkit内核的页面对象导出接口 ;内核启动模块62,用于在第一独立进程中启动Webkit内核;第一调用模块63,用于在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并第二调用模块64,用于通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。优选地,所述第一调用模块63具体可包括工厂方法获取子模块,用于获得所述页面对象导出接口提供的工厂方法;工厂对象创建子模块,用于调用所述工厂方法创建工厂对象;页面对象创建子模块,用于调用所述工厂对象创建基于Webkit内核的页面对象。优选地,所述第二调用模块64可通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口,并在该页面窗口中进行基于Webkit内核的页面内容加载。优选地,在第二独立进程中进行所述页面内容加载,所述加载包括根据接收到的http请求获取页面内容;对获取到的页面内容进行解析;对解析结果执行js操作;根据js操作结果建立dom树;对dom树进行渲染和展现。优选地,所述页面浏览操作包括页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。优选地,所述第二调用模块64具体可包括导航调用子模块,用于通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作; 和/或,移动调用子模块,用于通过所述页面对象提供的R印osition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动;和/或,停止调用子模块,用于通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容;和/或,刷新调用子模块,用于通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容;和/或,页面后退调用子模块,用于通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作;和/或,页面前进调用子模块,用于通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作;和/或,销毁调用子模块,用于通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。优选地,所述第二调用模块64还可包括 构造子模块,用于构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄;参数赋值子模块,用于将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法;页面创建子模块,用于通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。优选地,所述接口导出模块61可通过动态链接库提供Webkit内核的页面对象导出接口。优选地,所述装置还可包括路径查找模块65,用于访问注册表,查找注册表中所述动态链接库的存储路径;加载模块66,用于从所述存储路径加载所述动态链接库。优选地,所述装置还可包括更新模块67,用于Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。
优选地,多个第二独立进程通过从同一存储路径加载同一所述动态链接库。对于上述图6所示的网页浏览装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图5所示方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本申请实施例可以实施在任何支持图形处理、互联网内容撷取和渲染的装置(或多个装置)上。这些装置包括但不限于个人计算机、集群服务器、移动电话、工作站、嵌入式系统、游戏机、电视、机顶盒,或任何其它支持计算机图形和内容显示的计算装置。这些装置可以包括但不限于拥有执行和储存指令的一个或多个处理器和存储器的装置。这些装置可以包括软件、固件和硬件。软件可以包括一个或多个应用程序和操作系统。硬件可以包括但不限于处理器、存储器及显示器。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。 以上对本申请所提供的一种基于Webkit内核提供网页浏览的方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例
的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种基于Webkit内核提供网页浏览的方法,其特征在于,包括 设置一 Webkit内核的页面对象导出接口 ; 在第一独立进程中启动Webkit内核; 在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。
2.根据权利要求I所述的方法,其特征在于,所述调用所述页面对象导出接口创建基于Webkit内核的页面对象,包括 获得所述页面对象导出接口提供的工厂方法; 调用所述工厂方法创建工厂对象; 调用所述工厂对象创建基于Webkit内核的页面对象。
3.根据权利要求I所述的方法,其特征在于,所述通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面内容加载,包括 通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口; 在该页面窗口中进行基于Webkit内核的页面内容加载。
4.根据权利要求3述的方法,其特征在于,在第二独立进程中进行所述页面内容加载, 所述加载包括 根据接收到的http请求获取页面内容; 对获取到的页面内容进行解析; 对解析结果执行js操作; 根据js操作结果建立dom树; 对dom树进行渲染和展现。
5.根据权利要求3所述的方法,其特征在于,所述页面浏览操作包括 页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。
6.根据权利要求5所述的方法,其特征在于,所述通过所述页面对象调用所述独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作,包括 通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作; 和/或,通过所述页面对象提供的Imposition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动; 和/或,通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容; 和/或,通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容; 和/或,通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作; 和/或,通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作; 和/或,通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。
7.根据权利要求I至6任一所述的方法,其特征在于,所述通过所述页面对象调用所述第一独立进程中的Weblkit内核,包括 构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄; 将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法; 通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。
8.根据权利要求I所述的方法,其特征在于,所述设置一Webkit内核的页面对象导出接口,包括 通过动态链接库提供Webkit内核的页面对象导出接口。
9.根据权利要求8所述的方法,其特征在于,调用所述页面对象导出接口之前,还包括 访问注册表,查找注册表中所述动态链接库的存储路径; 从所述存储路径加载所述动态链接库I。
10.根据权利要求9所述的方法,其特征在于,还包括 Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。
11.根据权利要求10所述的方法,其特征在于 多个第二独立进程从同一存储路径加载同一所述动态链接库。
12.一种基于Webkit内核提供网页浏览的装置,其特征在于,包括 接口导出模块,用于设置一 Webkit内核的页面对象导出接口 ; 内核启动模块,用于在第一独立进程中启动Webkit内核; 第一调用模块,用于在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并 第二调用模块,用于通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。
13.根据权利要求12所述的装置,其特征在于,所述第一调用模块包括 工厂方法获取子模块,用于获得所述页面对象导出接口提供的工厂方法; 工厂对象创建子模块,用于调用所述工厂方法创建工厂对象; 页面对象创建子模块,用于调用所述工厂对象创建基于Webkit内核的页面对象。
14.根据权利要求12所述的装置,其特征在于 所述第二调用模块通过所述页面对象提供的页面创建方法,调用所述第一独立进程中的Weblkit内核创建页面窗口,并在该页面窗口中进行基于Webkit内核的页面内容加载。
15.根据权利要求14所述的装置,其特征在于,在第二独立进程中进行所述页面内容加载, 所述加载包括 根据接收到的http请求获取页面内容;对获取到的页面内容进行解析; 对解析结果执行js操作; 根据js操作结果建立dom树; 对dom树进行渲染和展现。
16.根据权利要求14所述的装置,其特征在于,所述页面浏览操作包括 页面跳转,和/或,页面窗口移动,和/或,页面停止加载,和/或,页面刷新,和/或,页面的前进、后退,和/或,页面销毁。
17.根据权利要求16所述的装置,其特征在于,所述第二调用模块包括 导航调用子模块,用于通过所述页面对象提供的Navigate方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面跳转操作; 和/或,移动调用子模块,用于通过所述页面对象提供的R印osition方法,调用所述独立进程中的Weblkit内核告知所述页面窗口跟随外部窗口的移动而移动; 和/或,停止调用子模块,用于通过所述页面对象提供的Stop方法,调用所述独立进程中的Weblkit内核停止在该页面窗口中加载页面内容; 和/或,刷新调用子模块,用于通过所述页面对象提供的Reload方法,调用所述独立进程中的Weblkit内核器刷新该页面窗口中的页面内容; 和/或,页面后退调用子模块,用于通过所述页面对象提供的GoBack方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面后退操作; 和/或,页面前进调用子模块,用于通过所述页面对象提供的GoForward方法,调用所述独立进程中的Weblkit内核在该页面窗口中进行页面前进操作; 和/或,销毁调用子模块,用于通过所述页面对象提供的Destroy方法,调用所述独立进程中的Weblkit内核销毁该页面对象。
18.根据权利要求12至17任一所述的装置,其特征在于,所述第二调用模块包括 构造子模块,用于构造参数对象,并在所述参数对象中填充目标访问的网址和窗口句柄; 参数赋值子模块,用于将填充后的参数对象作为参数值传递给所述页面对象提供的页面创建方法; 页面创建子模块,用于通过调用参数赋值后的页面创建方法,实现与所述独立进程中的Weblkit内核进行通信。
19.根据权利要求12所述的装置,其特征在于 所述接口导出模块通过动态链接库提供Webkit内核的页面对象导出接口。
20.根据权利要求19所述的装置,其特征在于,还包括 路径查找模块,用于访问注册表,查找注册表中所述动态链接库的存储路径; 加载模块,用于从所述存储路径加载所述动态链接库。
21.根据权利要求20所述的装置,其特征在于,还包括 更新模块,用于Webkit内核升级后更新所述动态链接库的版本,并将新版本的动态链接库保存到不同于旧版本的存储路径。
22.根据权利要求21所述的装置,其特征在于 多个第二独立进程通过从同一存储路径加载同一所述动态链接库。
全文摘要
本申请提供了一种基于Webkit内核提供网页浏览的方法及装置,以解决浏览器中使用Webbrowser内核控件而带来的安全性弱的问题。所述方法包括设置一Webkit内核的页面对象导出接口;在第一独立进程中启动Webkit内核;在第二独立进程中调用所述页面对象导出接口创建基于Webkit内核的页面对象;并通过所述页面对象调用所述第一独立进程中的Weblkit内核,进行基于Webkit内核的页面浏览操作和页面内容加载。本申请能很好地解决浏览器中Webbrowser内核版本落后、安全性薄弱、不支持非微软平台的问题,和直接使用webkit核心导致的技术门槛高、升级困难、安装包过大等问题。
文档编号G06F9/44GK102681850SQ201210139290
公开日2012年9月19日 申请日期2012年5月7日 优先权日2012年5月7日
发明者任寰, 刘庆平 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1