发明内容
本申请所要解决的技术问题是提供一种IE6内核与新型IE内核的切换方法,用以有效控制IE内核浏览器的页面下载过程,提高页面下载的效率和稳定性。
相应地,本申请还提供了一种IE6内核与新型IE内核的切换系统,用以保证上述方法在实际中的应用。
本申请为解决上述问题提供了一种IE6内核与新型IE内核的切换方法,包括:
生成IE6内核文件和新型IE内核文件,并导入客户端;
浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号;
若当前适配的IE内核版本号为IE6内核,则浏览器进程重定向至相应位置加载所述IE6内核文件;
若当前适配的IE内核版本号为新型IE内核,则浏览器进程重定向至相应位置加载所述新型IE内核文件。
优选的是,所述新型IE内核为IE8内核,所述新型IE内核文件为IE8内核文件。
优选的是,所述新型IE内核为IE8以上版本的IE内核,所述新型IE内核文件为IE8以上版本的IE内核文件。
优选的是,所述IE6内核文件和IE8内核文件包括:
IE6内核的动态链接库DLL和IE8内核的动态链接库DLL;
IE6内核的数据文件和IE8内核的数据文件;
IE6内核的语言包文件和IE8内核的语言包文件;
以及,IE6内核的注册表配置文件和IE8内核的注册表配置文件。
优选的是,所述生成IE6内核文件和新型IE内核文件,并导入客户端的步骤进一步包括:
从IE6内核提取IE6内核的动态链接库DLL,从IE8内核提取IE8内核的动态链接库DLL;
经调试分析生成IE6内核的数据文件和语言包文件,以及,IE8内核的数据文件和IE8内核的语言包文件;
将所述IE6内核的动态链接库DLL、数据文件和语言包文件,以及,IE8内核的动态链接库DLL、数据文件和语言包文件安装至客户端的指定位置;
生成IE6内核和IE8内核的注册表配置文件,并导入所述客户端的注册表中。
优选的是,所述从IE6内核提取IE6内核的动态链接库DLL,从IE8内核提取IE8内核的动态链接库DLL的步骤包括:
重载所有与IE6内核加载相关的系统应用程序接口API;
通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
排除系统底层的动态链接库DLL,提取IE6内核的动态链接库DLL;
以及,
重载所有与IE8内核加载相关的系统应用程序接口API;
通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
排除系统底层的动态链接库DLL,提取IE8内核的动态链接库DLL。
优选的是,所述浏览器进程依据用户提交的统一资源定位符URL信 息,判断当前适配的IE内核版本号的步骤进一步包括:
若当前用户提交的统一资源定位符URL信息为局域网地址,则判定当前适配的IE内核版本号为IE6内核;
若当前用户提交的统一资源定位符URL信息包含IP地址,则判定当前适配的IE内核版本号为IE6内核;
若当前用户提交的统一资源定位符URL信息包含在IE8内核兼容域名列表中,则判定当前适配的IE内核版本号为IE8内核。
优选的是,所述浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号的步骤还包括:
若当前用户提交的统一资源定位符URL信息包含在新型IE内核兼容域名列表中,则判定当前适配的IE内核版本号为对应的新型IE内核。
优选的是,所述浏览器进程重定向至客户端相应位置加载所述IE6内核文件的步骤进一步包括:
子步骤S11、当监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE6内核的注册表配置文件;若查询IE内核文件的路径,则返回IE6内核文件所导入的客户端指定位置的信息;
子步骤S12、当监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
子步骤S13、当监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
子步骤S14、当监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述子步骤S12;
子步骤S15、当监视到浏览器进程访问DLL内核句柄时,调用所述 子步骤S12。
优选的是,所述浏览器进程重定向至客户端相应位置加载所述IE8内核文件的步骤进一步包括:
子步骤S21、当监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE8内核的注册表配置文件;若查询IE内核文件的路径,则返回IE8内核文件所导入的客户端指定位置的信息;
子步骤S22、当监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
子步骤S23、当监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
子步骤S24、当监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述子步骤S22;
子步骤S25、当监视到浏览器进程访问DLL内核句柄时,调用所述子步骤S22。
优选的是,所述的方法还包括:
将所述IE6内核文件和IE8内核文件写入内存;
所述浏览器进程重定向至相应位置加载所述IE6内核文件的步骤为,所述浏览器进程重定向至内存中的相应位置加载所述IE6内核文件;
所述浏览器进程重定向至相应位置加载所述IE8内核文件的步骤为,所述浏览器进程重定向至内存中的相应位置加载所述IE8内核文件。
本申请还提供了一种IE6内核与新型IE内核的切换系统,包括:
内核文件生成模块,用于生成IE6内核文件和新型IE内核文件,并 导入客户端;
IE内核版本号判断模块,用于由浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号;
IE6内核加载模块,用于在当前适配的IE内核版本号为IE6内核时,由浏览器进程重定向至相应位置加载所述IE6内核文件;
IE8内核加载模块,用于在当前适配的IE内核版本号为新型IE内核时,由浏览器进程重定向至相应位置加载所述新型IE内核文件。
优选的是,所述新型IE内核为IE8内核,所述新型IE内核文件为IE8内核文件。
优选的是,所述新型IE内核为IE8以上版本的IE内核,所述新型IE内核文件为IE8以上版本的IE内核文件。
优选的是,所述IE6内核文件和IE8内核文件包括:
IE6内核的动态链接库DLL和IE8内核的动态链接库DLL;
IE6内核的数据文件和IE8内核的数据文件;
IE6内核的语言包文件和IE8内核的语言包文件;
以及,IE6内核的注册表配置文件和IE8内核的注册表配置文件。
优选的是,所述内核文件生成模块进一步包括:
DLL提取子模块,用于从IE6内核提取IE6内核的动态链接库DLL,从IE8内核提取IE8内核的动态链接库DLL;
相关文件组织子模块,用于经调试分析生成IE6内核的数据文件和语言包文件,以及,IE8内核的数据文件和IE8内核的语言包文件;
安装子模块,用于将所述IE6内核的动态链接库DLL、数据文件和语言包文件,以及,IE8内核的动态链接库DLL、数据文件和语言包文件安装至客户端的指定位置;
注册表配置子模块,用于生成IE6内核和IE8内核的注册表配置文件,并导入所述客户端的注册表中。
优选的是,所述DLL提取子模块进一步包括:
第一API重载单元,用于重载所有与IE6内核加载相关的系统应用 程序接口API;
第一DLL获取单元,用于通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
第一筛选单元,用于排除系统底层的动态链接库DLL,提取IE6内核的动态链接库DLL;
以及,
第二API重载单元,用于重载所有与IE8内核加载相关的系统应用程序接口API;
第二DLL获取单元,用于通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
第二筛选单元,用于排除系统底层的动态链接库DLL,提取IE8内核的动态链接库DLL。
优选的是,所述IE内核版本号判断模块进一步包括:
第一判定子模块,用于在前用户提交的统一资源定位符URL信息为局域网地址时,判定当前适配的IE内核版本号为IE6内核;
第二判定子模块,用于在当前用户提交的统一资源定位符URL信息包含IP地址时,判定当前适配的IE内核版本号为IE6内核;
第三判定子模块,用于在当前用户提交的统一资源定位符URL信息包含在IE8内核兼容域名列表中时,判定当前适配的IE内核版本号为IE8内核。
优选的是,所述IE6内核加载模块进一步包括:
第一注册表操作子模块,用于在监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE6内核的注册表配置文件;若查询IE内核文件的路径,则返回IE6内核文件所导入的客户端指定位置的信息;
第一DLL操作子模块,用于在监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库 DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
第一相关文件操作子模块,用于在监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
第一COM对象创建子模块,用于在监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述第一DLL操作子模块;
第一DLL内核句柄操作子模块,用于当监视到浏览器进程访问DLL内核句柄时,调用所述第一DLL操作子模块。
优选的是,所述IE8内核加载模块进一步包括:
第二注册表操作子模块,用于在监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE8内核的注册表配置文件;若查询IE内核文件的路径,则返回IE8内核文件所导入的客户端指定位置的信息;
第二DLL操作子模块,用于在监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
第二相关文件操作子模块,用于在监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
第二COM对象创建子模块,用于在监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述第二DLL操作子模块;
第二DLL内核句柄操作子模块,用于当监视到浏览器进程访问DLL内核句柄时,调用所述第二DLL操作子模块。
优选的是,所述的系统还包括:
内存写入模块,用于将所述IE6内核文件和IE8内核文件写入内存;
所述浏览器进程重定向至的相应位置为内存中的相应位置。
与现有技术相比,本申请具有以下优点:
本申请可以在不影响用户IE使用的前提下,对适合IE6显示的页面加载IE6内核,适合IE8显示的页面加载IE8内核,以达到复杂环境下用户浏览最完整的兼容性和适配性。
本申请充分结合了IE6对银行/大型门户网站的普遍支持、IE8的安全、渲染、速度方面提升的优点,实现了一种IE6内核与IE8内核最完整的兼容方式。再者,通过本申请的智能判定自动切换内核,无须重新启动浏览器,无须更换操作系统、或升级IE、或安装多款软件,使用方便。此外,本申请的扩展性好,可以支持IE其它版本内核自动切换。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的核心构思在于,在不影响用户IE使用的前提下,对适合IE6 显示的页面加载IE6内核,适合IE8显示的页面加载IE8内核,以达到复杂环境下用户浏览最完整的兼容性和适配性。
参考图1,示出了本申请的一种IE6内核与新型IE内核的切换方法实施例1的步骤流程图,具体可以包括以下步骤:
步骤101、生成IE6内核文件和新型IE内核文件,并导入客户端;
在本申请实施例中,所述IE内核指采用IE(Internet Explorer)浏览器内核,IE6内核即指采用IE6(Internet Explorer 6)的浏览器内核,新型IE内核包括IE8内核以及IE8以上版本的IE内核,IE8内核即指采用IE8(Internet Explorer 8)的浏览器内核,IE8以上版本的IE内核即指采用IE9、IE10等可能出现的更高版本的浏览器内核。
为使本领域技术人员更好地理解本申请,在本说明书中,将IE8内核作为新型IE内核的一种示例进行说明。
在本申请的一种优选实施例中,所述新型IE内核文件可以为IE8内核文件,则所述IE6内核文件和IE8内核文件可以包括:
IE6内核的动态链接库DLL和IE8内核的动态链接库DLL;
IE6内核的数据文件和IE8内核的数据文件;
IE6内核的语言包文件和IE8内核的语言包文件;
以及,IE6内核的注册表配置文件和IE8内核的注册表配置文件。
其中,动态链接库DLL,是Dynamic Link Library的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。通过使用DLL,程序可以实现模块化,由相对独立的组件组成。
在本实施例中,所述步骤101具体可以包括如下子步骤:
子步骤S01、从IE6内核提取IE6内核的动态链接库DLL,从IE8内核提取IE8内核的动态链接库DLL;
子步骤S02、经调试分析生成IE6内核的数据文件和语言包文件,以及,IE8内核的数据文件和IE8内核的语言包文件;
子步骤S03、将所述IE6内核的动态链接库DLL、数据文件和语言包文件,以及,IE8内核的动态链接库DLL、数据文件和语言包文件安装至客户端的指定位置;
例如,将所述IE6内核的动态链接库DLL、数据文件和语言包文件,以及,IE8内核的动态链接库DLL、数据文件和语言包文件安装至客户端的某个目录下。
在具体实现中,上述IE6内核的相关文件,以及,IE8内核的相关文件可以分别存储在客户端的不同目录下;或者,也可以存储至同一目录,但针对各文件分别标注其版本号标识,本申请对此不作限制。
子步骤S04、生成IE6内核和IE8内核的注册表配置文件,并导入所述客户端的注册表中。
基于IE内核的浏览器,通过静态、动态方式加载的内核DLL非常多,这些DLL可能与操作系统底层相关,可能还需要引用一些注册表项、数据文件、或者语言包文件,需要通过调试逐步分析生成。
更为优选的是,所述子步骤S01可以进一步包括以下子步骤:
子步骤S01-11、重载所有与IE6内核加载相关的系统应用程序接口API;
子步骤S01-12、通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
例如,通过监视LoadLibrary接口(或其它模块查看器),获得浏览器加载的所有DLL。
子步骤S01-13、排除系统底层的动态链接库DLL,提取IE6内核的动态链接库DLL。
以及,
子步骤S01-21、重载所有与IE8内核加载相关的系统应用程序接口API;
子步骤S01-22、通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
子步骤S01-23、排除系统底层的动态链接库DLL,提取IE8内核的动态链接库DLL。
步骤102、浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号;
URL(Uniform Resoure Locator统一资源定位器)是WWW网页的地址,URL使用数字和字母按一定顺序排列以确定一个地址。URL的第一个部分http://表示的是要访问的文件的类型。在网上,这几乎总是使用http(意思是超文本转换协议,hypertext transfer protocol,因为它是用来转换网页的协议。)
URL从左到右由下述部分组成:
Internet资源类型(scheme):指出WWW客户程序用来C作的工具。如“http://”表示WWW服务器,“ftp://”表示FTP服务器,“gopher://”表示Gopher服务器,而“new:”表示Newgroup新闻组。
服务器地址(host):指出WWW网页所在的服务器域名。
端口(port):有时(并非总是这样),对某些资源的访问来说,需给出相应的服务器提供端口号。
路径(path):指明服务器上某资源的位置(其格式与DOS系统中的格式一样,通常有目录/子目录/文件名这样结构组成)。与端口一样,路径并非总是需要的。
URL 地址格式排列为:scheme://host:port/path,例如 http://www.maogoo.com/bbs就是一个典型的URL地址。浏览器首先看到http(超文本传送协议),便知道处理的是HTML链接。接下来的 www.maogoo.com是站点地址,最后是目录/bbs。
公知的是,进程是一个正在执行的程序,即计算机中正在运行的程序实例;其可以分配给处理器并作为一个实体由处理器执行。从用户角 度来看,浏览器进程可以理解为在任务管理器内所启动的浏览器代表的进程。
在本申请的一种优选实施例中,所述步骤102具体可以包括如下子步骤:
子步骤S121、若当前用户提交的统一资源定位符URL信息为局域网地址,则判定当前适配的IE内核版本号为IE6内核;
子步骤S122、若当前用户提交的统一资源定位符URL信息包含IP地址,则判定当前适配的IE内核版本号为IE6内核;
子步骤S123、若当前用户提交的统一资源定位符URL信息包含在IE8内核兼容域名列表中,则判定当前适配的IE内核版本号为IE8内核。
即每个页面开始连接前,浏览器进程会判断访问域名的信息,若为局域网地址或为纯IP地址的HTTP请求,则开启IE6模式;根据实际中IE8内核的兼容域名列表,判定开启IE8模式。在具体实现中,对于其它情况,可以使用系统自带的其它IE内核。
在实际中,若新型IE内核为IE8以上版本的IE内核,则所述步骤102还可以包括如下子步骤:
若当前用户提交的统一资源定位符URL信息包含在新型IE内核兼容域名列表中,则判定当前适配的IE内核版本号为对应的新型IE内核。
步骤103、若当前适配的IE内核版本号为IE6内核,则浏览器进程重定向至相应位置加载所述IE6内核文件;
重定向,字面即为对某A文件的操作直接转移到B文件。比如读、写、设置长度或文件结尾指针等属性、甚至是删除操作。
在本申请的一种优先实施例中,所述浏览器进程重定向至客户端相应位置加载所述IE6内核文件的步骤可以进一步包括以下子步骤:
子步骤S11、当监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE6内核的注册表配置文件;若查询IE内核文件的路径,则返回IE6内核文件所导入的客户端指定位置的信息;
子步骤S12、当监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
子步骤S13、当监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
子步骤S14、当监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述子步骤S12;
其中,COM对象(The Component Object Model组件对象模型)是遵循COM规范编写、以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够满足对组件架构的所有需求。遵循COM的规范标准,组件与应用、组件与组件之间可以互操作,极其方便地建立可伸缩的应用系统。COM对象是一个使用COM规格的可以重复使用的软件组件。使用COM规格可以确保COM对象很好的工作,并且很容易的结合到你的应用程序中。事实上,COM基本相当于一个黑匣子,这个黑匣子能为你的应用程序完成很多的工作。COM对象一般用动态连接库(DLL)实现。和普通的DLL一样,COM对象暴露一些方法,应用程序能够呼叫它,以便完成任何支持的操作。
子步骤S15、当监视到浏览器进程访问DLL内核句柄时,调用所述子步骤S12。
其中,句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。但是,句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。
步骤104、若当前适配的IE内核版本号为新型IE内核,则浏览器进 程重定向至相应位置加载所述新型IE内核文件。
在本申请的一种优先实施例中,所述浏览器进程重定向至客户端相应位置加载所述IE8内核文件的步骤可以进一步包括如下子步骤:
子步骤S21、当监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE8内核的注册表配置文件;若查询IE内核文件的路径,则返回IE8内核文件所导入的客户端指定位置的信息;
子步骤S22、当监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
子步骤S23、当监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
子步骤S24、当监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述子步骤S22;
子步骤S25、当监视到浏览器进程访问DLL内核句柄时,调用所述子步骤S22。
具体而言,在本申请实施例中,所述IE内核文件的重定向主要是指在浏览器创建时,转向程序指定路径加载文件,主要包括:
1、IE内核重定向。使浏览器加载指定版本内核对象,重载实现系统API,具体可以采用:
CoCreateInstance:创建文档及框架组件
CoGetClassObject:创建脚本引擎及脚本对象
CoCreateInstanceEx:创建文字系统等扩展接口
2、DLL重定向。一些功能模块可能以DLL方式实现,也需要重载系统API以重定向,具体可以采用:
LoadLibrary/LoadLibrary:实现DLL加载
FreeLibrary:实现DLL释放
3、注册表重定向。使浏览器加载/保存指定版本的配置数据,重载实现系统API,具体可以采用:
RegOpenKeyEx:打开注册表键值以读写
当然,上述方法仅仅用作示例,在具体实现中,本领域技术人员应用其它内核重定向的方法加载对应版本的IE内核文件均是可行的,本申请对此无需加以限制。
参考图2,示出了本申请的一种IE6内核与新型IE内核的切换方法实施例2的步骤流程图,具体可以包括以下步骤:
步骤201、生成IE6内核文件和IE8内核文件,并导入客户端;
步骤202、浏览器进程启动时,将所述IE6内核文件和IE8内核文件写入内存;
步骤203、浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号;
步骤204、若当前适配的IE内核版本号为IE6内核,则浏览器进程重定向至内存中相应位置加载所述IE6内核文件;
步骤205、若当前适配的IE内核版本号为IE8内核,则浏览器进程重定向至内存中相应位置加载所述IE8内核文件。
为使本领域技术人员更好地理解本申请,以下通过一个完整示例说明本申请的IE6内核与IE8内核的切换过程。
步骤A、将IE6内核的主要模块文件和IE8内核的主要模块文件,安装到客户端的指定目录中;
其中,所述IE6内核的主要模块文件和IE8内核的主要模块文件包括:IE6内核的动态链接库DLL和IE8内核的动态链接库DLL;IE6内核的数据文件和IE8内核的数据文件;IE6内核的语言包文件和IE8内核的语言包文件等。
步骤B、将IE6内核的注册表配置文件和IE8内核的注册表配置文件,导入客户端的注册表中;
步骤C、浏览器启动时,执行以下子步骤:
子步骤C1、监视注册表、DLL、内存、网页(用户输入或点击的URL)的访问;
子步骤C2、加载IE6内核的主要模块文件和IE8内核的主要模块文件到内存中;
步骤D、当浏览器接收到用户提交的URL时,按照如下方式计算适合该URL的IE内核版本号:
如果URL为局域网地址,则返回IE内核版本号为IE6(使用IE6内核);
如果URL包含IP地址,则返回IE内核版本号为IE6(使用IE6内核);
如果URL在IE8的兼容域名列表中,则返回IE内核版本号为IE8(使用IE8内核);
其它情况返回0(使用系统自有的IE内核)。
步骤E、浏览器开始加载内核,创建页面时,会读写注册表、加载DLL及数据文件、创建COM对象,具体涉及以下操作:
1、当监视到浏览器访问注册表时,若访问IE配置项,则引导其读写步骤B中导入的对应项;若查询IE内核模块路径,则返回步骤C中的内存指定位置;
2、当监视到浏览器访问DLL时,根据步骤D中计算的IE内核版本号,定位到内存中对应的内核文件目录,到该内核目录中查找相同名称的DLL,若找到,则引导浏览器进程加载对应的内核文件;否则,引导浏览器加载系统的缺省模块;
3、当监视到浏览器访问数据文件、语言包文件时,根据步骤D中计算的IE内核版本号,到内存中对应的内核文件目录中查找相应文件;
4、当监视到浏览器创建COM对象时,从步骤B的注册表中,查找 实现该COM对象的DLL,执行以上步骤2;
5、当监视到浏览器访问DLL内核句柄时,执行以上步骤2。
在本例中,步骤A、B可以在安装过程中完成,每次浏览器进程启动时执行C项,步骤D、E在每次浏览页面时均执行。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参考图3,示出了本申请的一种IE6内核与新型IE内核的切换系统实施例的结构框图,具体可以包括如下模块:
内核文件生成模块301,用于生成IE6内核文件和新型IE内核文件,并导入客户端;
IE内核版本号判断模块302,用于由浏览器进程依据用户提交的统一资源定位符URL信息,判断当前适配的IE内核版本号;
IE6内核加载模块303,用于在当前适配的IE内核版本号为IE6内核时,由浏览器进程重定向至相应位置加载所述IE6内核文件;
IE8内核加载模块304,用于在当前适配的IE内核版本号为新型IE内核时,由浏览器进程重定向至相应位置加载所述新型IE内核文件。
在本申请实施例中,所述新型IE内核可以为IE8内核,为使本领域技术人员更好地理解本申请,在本申请实施例中以IE8内核为新型IE内核的一种示例进行说明。
在实际中,所述新型IE内核还可以为IE8以上版本的IE内核,在这种情况下,所述新型IE内核文件可以为IE8以上版本的IE内核文件。
在具体实现中,所述新型IE内核文件可以为IE8内核文件,则所述IE6内核文件和IE8内核文件可以包括:
IE6内核的动态链接库DLL和IE8内核的动态链接库DLL;
IE6内核的数据文件和IE8内核的数据文件;
IE6内核的语言包文件和IE8内核的语言包文件;
以及,IE6内核的注册表配置文件和IE8内核的注册表配置文件。
在这种情况下,所述内核文件生成模块301可以进一步包括如下子模块:
DLL提取子模块,用于从IE6内核提取IE6内核的动态链接库DLL,从IE8内核提取IE8内核的动态链接库DLL;
相关文件组织子模块,用于经调试分析生成IE6内核的数据文件和语言包文件,以及,IE8内核的数据文件和IE8内核的语言包文件;
安装子模块,用于将所述IE6内核的动态链接库DLL、数据文件和语言包文件,以及,IE8内核的动态链接库DLL、数据文件和语言包文件安装至客户端的指定位置;
注册表配置子模块,用于生成IE6内核和IE8内核的注册表配置文件,并导入所述客户端的注册表中。
在本申请的一种优选实施例中,所述DLL提取子模块可以进一步包括如下子模块:
第一API重载单元,用于重载所有与IE6内核加载相关的系统应用程序接口API;
第一DLL获取单元,用于通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
第一筛选单元,用于排除系统底层的动态链接库DLL,提取IE6内核的动态链接库DLL;
以及,
第二API重载单元,用于重载所有与IE8内核加载相关的系统应用程序接口API;
第二DLL获取单元,用于通过监视动态链接库DLL查看接口,获得浏览器加载的所有动态链接库DLL;
第二筛选单元,用于排除系统底层的动态链接库DLL,提取IE8内核的动态链接库DLL。
作为本申请实施例具体应用的一种示例,所述IE内核版本号判断模块302可以进一步包括如下子模块:
第一判定子模块,用于在前用户提交的统一资源定位符URL信息为局域网地址时,判定当前适配的IE内核版本号为IE6内核;
第二判定子模块,用于在当前用户提交的统一资源定位符URL信息包含IP地址时,判定当前适配的IE内核版本号为IE6内核;
第三判定子模块,用于在当前用户提交的统一资源定位符URL信息包含在IE8内核兼容域名列表中时,判定当前适配的IE内核版本号为IE8内核。
在具体实现中,所述IE6内核加载模块303可以进一步包括如下子模块:
第一注册表操作子模块,用于在监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE6内核的注册表配置文件;若查询IE内核文件的路径,则返回IE6内核文件所导入的客户端指定位置的信息;
第一DLL操作子模块,用于在监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
第一相关文件操作子模块,用于在监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE6内核的版本号,定位到对应的IE6内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
第一COM对象创建子模块,用于在监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库 DLL,然后调用所述第一DLL操作子模块;
第一DLL内核句柄操作子模块,用于当监视到浏览器进程访问DLL内核句柄时,调用所述第一DLL操作子模块。
在具体实现中,所述IE8内核加载模块304可以进一步包括如下子模块:
第二注册表操作子模块,用于在监视到浏览器进程访问注册表时,若访问IE配置项,则引导浏览器进程读写IE8内核的注册表配置文件;若查询IE内核文件的路径,则返回IE8内核文件所导入的客户端指定位置的信息;
第二DLL操作子模块,用于在监视到浏览器进程访问动态链接库DLL时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的动态链接库DLL,若找到,则引导浏览器进程加载该动态链接库DLL;
第二相关文件操作子模块,用于在监视到浏览器进程访问数据文件、语言包文件时,根据当前适配的IE8内核的版本号,定位到对应的IE8内核文件所导入的客户端指定位置,并到该位置查找相同名称的数据文件和语言包文件,若找到,则引导浏览器进程加载该数据文件和语言包文件;
第二COM对象创建子模块,用于在监视到浏览器进程创建COM对象时,从所述客户端的注册表中,查找实现该COM对象的动态链接库DLL,然后调用所述第二DLL操作子模块;
第二DLL内核句柄操作子模块,用于当监视到浏览器进程访问DLL内核句柄时,调用所述第二DLL操作子模块。
在本申请的一种优选实施例中,所述系统还可以包括:
内存写入模块,用于将所述IE6内核文件和IE8内核文件写入内存;
在这种情况下,所述浏览器进程重定向至的相应位置为内存中的相应位置。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的 比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种IE6内核与新型IE内核的切换方法和一种IE6内核与新型IE内核的切换系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。