掌桥专利:专业的专利平台
掌桥专利
首页

一种加载Web页面的方法及相关装置

文献发布时间:2024-04-18 19:52:40


一种加载Web页面的方法及相关装置

技术领域

本申请涉及计算机技术领域,特别涉及一种加载Web页面的方法;还涉及一种加载Web页面的装置、设备以及计算机可读存储介质。

背景技术

应用程序(尤其是客户端程序)直接跟用户交互,需要把丰富的内容展现给用户。交互界面可以用C++等语言基于一些界面库进行开发,但考虑到开发门槛、效率、更新方便性等因素,越来越多的应用程序基于内嵌Web页面的方式开发界面。在此情况下,应用程序使用内嵌浏览器内核,实现Web页面的加载、渲染等。常见的内嵌浏览器内核包括:开源的libcef库(封装的谷歌Chrome浏览器)、Windows自带的IE内核等。应用程序通过自身进程加载浏览器内核,调用浏览器内核的接口加载Web页面。应用程序跟Web页面之间可以进行交互,Web页面的JavaScript脚本可调用应用程序提供的接口,应用程序可以调用Web页面的脚本函数。然而,浏览器内核在处理一些复杂、非标准、或者有缺陷的Web页面时,或者由于浏览器自身的问题,可能出现主进程卡死、进程崩溃等情况。如果是IE内核(单进程),或者libcef(多进程)的主进程出现问题,就会导致应用程序卡死或者崩溃。另外,当应用程序窗口最小化、隐藏后,或者不再需要展示Web页面时,应用程序为了减少内存等资源占用,销毁了所有的Web页面,但主进程中浏览器占用的大量内存无法回收。原因是浏览器内核本身的模块不支持动态释放,仍然驻留在应用程序进程中;浏览器内核在加载Web页面过程中分配的一些内存、占用的资源,在进程存活期间不会释放或需等待较长时间才会慢慢释放。

有鉴于此,如何解决上述技术缺陷已成为本领域技术人员亟待解决的技术问题。

发明内容

本申请的目的是提供一种加载Web页面的方法,能够避免应用程序卡死或崩溃,并且在应用程序运行过程中,可以实现浏览器内核占用的内存等资源的完全回收。本申请的另一个目的是提供一种加载Web页面的方法装置、设备以及计算机可读存储介质,均具有上述技术效果。

为解决上述技术问题,本申请提供了一种加载Web页面的方法,包括:

创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;

构建页面加载信令;

通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

可选的,还包括:

通过所述命名管道向所述Web页面加载程序发送脚本函数调用信令,以使所述Web页面加载程序根据所述脚本函数调用信令调用所述浏览器内核的接口执行相应的脚本函数。

可选的,还包括:

修改所述Web页面的容器窗口的大小后,通过所述命名管道向所述Web页面加载程序发送窗口修改信令,以使所述Web页面加载程序根据所述窗口修改信令改变所述子窗口的大小。

可选的,还包括:

通过所述命名管道向所述Web页面加载程序发送页面销毁信令,以使所述Web页面加载程序根据所述页面加载信令销毁所述子窗口与所述Web页面;

销毁所述Web页面的容器窗口。

可选的,还包括:

在所述Web页面加载程序销毁所有已加载的所述Web页面后,终止运行所述Web页面加载程序。

可选的,还包括:

重新显示Web页面时或定时检查所述Web页面的容器窗口下是否存在所述子窗口;

若所述Web页面的容器窗口下不存在所述子窗口,则重新触发所述Web页面加载程序运行,与所述Web页面加载程序创建的命令管道服务端连接,并通过所述命名管道向Web页面加载程序发送所述页面加载信令。

可选的,还包括:

接收所述Web页面加载程序返回的信令;

根据所述信令进行相应的处理,并返回处理结果。

为解决上述技术问题,本申请还提供了一种加载Web页面的装置,包括:

创建模块,用于创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;

构建模块,用于构建页面加载信令;

发送模块,用于通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

为解决上述技术问题,本申请还提供了一种加载Web页面的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的加载Web页面的方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的加载Web页面的方法的步骤。

本申请所提供的加载Web页面的方法,包括:创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;构建页面加载信令;通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

可见,本申请所提供的加载Web页面的方法,设置专门用于加载Web页面、渲染Web页面的Web页面加载程序。当应用程序需要加载Web页面时,应用程序向Web页面加载程序发送页面加载信令,使Web页面加载程序在应用程序指定的窗口区域加载并展示Web页面。当应用程序不再需要显示Web页面时,可直接关闭Web页面加载程序,能够实现浏览器内存等资源的完全回收。另外,Web页面加载程序,作为本地服务端程序,可以同时为本地多个应用程序提供Web页面加载服务,可以避免一台机器上多个应用程序各自加载运行自己的浏览器内核实例,能够进一步减少总体资源消耗。同时,该加载Web页面的方法有效降低了应用程序和浏览器内核的耦合度,切换浏览器内核,只需要更新Web页面加载程序,不需要修改和重新编译应用程序。

本申请所提供的加载Web页面的装置、设备以及计算机可读存储介质均具有上述技术效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种加载Web页面的方法的流程示意图;

图2为本申请实施例所提供的一种加载Web页面的实施例的示意图;

图3为本申请实施例所提供的一种加载Web页面的装置的示意图;

图4为本申请实施例所提供的一种加载Web页面的设备的示意图。

具体实施方式

本申请的核心是提供一种加载Web页面的方法,能够避免应用程序卡死或崩溃,并且在应用程序运行过程中,可以实现浏览器内核占用的内存等资源的完全回收。本申请的另一个核心是提供一种加载Web页面的方法装置、设备以及计算机可读存储介质,均具有上述技术效果。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种加载Web页面的方法的流程示意图,参考图1所示,该方法包括:

S101:创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;

本实施例的执行主体为应用程序。应用程序在增加内嵌Web页面功能后,应用程序的进程数不变,原来是单进程,增加内嵌Web页面功能后仍然是单进程。应用程序不加载浏览器相关的任何模块,而增加一些加载Web页面相关的信令处理逻辑。

首次加载某个Web页面时,应用程序的进程检测Web页面加载程序是否已运行。如果Web页面加载程序未运行,则触发Web页面加载程序运行。Web页面加载程序运行后,创建一个命令管道服务端,等待应用程序连接。应用程序的进程连接到Web页面加载程序命令管道服务端,建立应用程序与Web页面加载程序的本地双向通信。应用程序的进程创建Windows窗口,以Windows窗口作为Web页面的容器窗口。其中,Web页面的容器窗口与Web页面一一对应。

S102:构建页面加载信令;

页面加载信令是指用于指示Web页面加载程序加载Web页面的信令。页面加载信令包括容器窗口的句柄、URL地址。

S103:通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

命名管道是一种简单的进程间通信机制。命名管道可以在同一台计算机的不同进程之间或跨越网络的不同计算机的不同进程之间,支持可靠的单向或双向的数据通信。

Web页面加载程序,包括主进程、Render(渲染)进程、插件进程、Utility(工具)进程等,主进程运行libcef内核的主进程逻辑、加载Web页面相关的信令处理逻辑。

应用程序通过命名管道向Web页面加载程序发送页面加载信令。Web页面加载程序收到页面加载指令后,根据页面加载信令创建一个以Web页面的容器窗口为父窗口的子窗口,并将子窗口铺满Web页面的容器窗口。Web页面加载程序在所创建的子窗口内,使用浏览器内核(libecef、IE等)加载URL地址对应的Web页面。

在一些实施例中,还包括:

通过所述命名管道向Web页面加载程序发送脚本函数调用信令,以使所述Web页面加载程序根据所述脚本函数调用信令调用所述浏览器内核的接口执行相应的脚本函数。

脚本函数调用信令用于指示Web页面加载程序调用脚本函数。脚本函数调用信令包括容器窗口的句柄、函数名称及参数等。当应用程序需要调用Web页面的脚本函数时,应用程序构建脚本函数调用信令,通过所述命名管道向Web页面加载程序发送所述脚本函数调用信令。Web页面加载程序接收到脚本函数调用信令后,Web页面加载程序根据脚本函数调用信令调用所述浏览器内核的接口,执行相应的脚本函数。

本实施例中应用程序调用Web页面的脚本函数同样借助Web页面加载程序实现,可以避免内嵌浏览器进程崩溃卡死而导致应用程序崩溃卡死,并且能够解决内嵌流程器占用的内存、线程等资源常驻在应用程序汇总,无法完全回收的问题。

在一些实施例中,还包括:

修改所述Web页面的容器窗口的大小后,通过所述命名管道向所述Web页面加载程序发送窗口修改信令,以使所述Web页面加载程序根据所述窗口修改信令改变所述子窗口的大小。

当应用程序修改了容器窗口的大小(例如,拉深容器窗口)后,应用程序构建一个窗口修改信令。窗口修改指令用于指示Web页面加载程序改变所创建的子窗口的大小以及Web页面的输出大小。应用程序通过命名管道向所述Web页面加载程序发送窗口修改信令。Web页面加载程序接收到窗口修改信令后,根据窗口修改信令改变子窗口的大小与Web页面的输出大小。改变后的子窗口同样铺满修改后的容器窗口。

本实施例修改Web页面的容器窗口,并通过向Web页面加载程序发送窗口修改信令使Web页面加载程序相应的改变所述子窗口的大小,可以实现动态改变Web页面的大小。

在一些实施例中,还包括:

通过所述命名管道向所述Web页面加载程序发送页面销毁信令,以使所述Web页面加载程序根据所述页面加载信令销毁所述子窗口与所述Web页面;

销毁所述Web页面的容器窗口。

页面销毁信令用于指示Web页面加载程序销毁Web页面。页面销毁信令包括待销毁的Web页面所在的容器窗口的句柄。当应用程序需要销毁某个Web页面时,应用程序构建一个页面销毁信令,通过命名管道向Web页面加载程序发送页面销毁信令。Web页面加载程序接收到页面销毁信令后,根据所述页面加载信令销毁容器窗口下的子窗口与Web页面。另外,应用程序销毁该的容器窗口。

在一些实施例中,还包括:

在所述Web页面加载程序销毁所有已加载的所述Web页面后,终止运行所述Web页面加载程序。

本实施例旨在回收资源。应用程序销毁所有已加载的Web页面,并在应用程序销毁所有已加载的Web页面后,终止运行Web页面加载程序的进程。其中,如果是多进程,则应用程序终止所有Web页面加载同名进程。完成上述操作后,所有浏览器相关资源(进程、内存、句柄等)便完全回收。

在一些实施例中,还包括:

重新显示Web页面时或定时检查所述Web页面的容器窗口下是否存在所述子窗口;

若所述Web页面的容器窗口下不存在所述子窗口,则重新触发所述Web页面加载程序运行,与所述Web页面加载程序创建的命令管道服务端连接,并通过命名管道向Web页面加载程序发送所述页面加载信令。

Web页面加载程序崩溃后,其创建的子窗口会自动销毁,已建立的命名管道连接会断开。应用程序在重新显示Web页面时检查Web页面的容器窗口下是否存在子窗口。如果Web页面的容器窗口下不存在子窗口,则应用程序重新触发Web页面加载程序运行,与Web页面加载程序创建的命令管道服务端连接,并通过命名管道向Web页面加载程序发送所述页面加载信令。或者,应用程序定时检查Web页面的容器窗口下是否存在子窗口。如果Web页面的容器窗口下不存在子窗口,则应用程序重新触发Web页面加载程序运行,与Web页面加载程序创建的命令管道服务端连接,并通过命名管道向Web页面加载程序发送所述页面加载信令。

在一些实施例中,还包括:

接收所述Web页面加载程序返回的信令;

根据所述信令进行相应的处理,并返回处理结果。

当有Web页面加载事件(例如,Web页面加载成功事件、Web页面加载失败事件)发生时,Web页面加载程序将Web页面加载事件通过信令回传给应用程序。应用程序根据预先设定的处理逻辑,进行相应的处理,并通过信令向Web页面加载程序返回处理结果。

例如,应用程序收到Web页面加载失败事件,此时应用程序可加载本地的一个错误提示Web页面,或者可以以其他的形式反馈给用户。

当浏览器内核收到Web页面脚本对应用程序的函数调用,Web页面加载程序将函数调用通过信令回传给应用程序进行处理。应用程序返回处理结果。

例如,应用程序可以提供各种自定义的函数给Web页面脚本调用。Web页面脚本调用一个获取本地Mac(网卡)地址的函数,应用程序收到后就可以调用系统API获取到Mac地址,再通过信令把结果返回给Web页加载程序,Web页加载程序再返回给Web页面脚本。

结合图2所示,以下描述一种具体的实施例:

应用程序与Web页面加载程序建立命名管道连接。应用程序创建Web页面的容器窗口。应用程序发送信令,以指示Web页面加载程序加载Web页面。Web页面加载程序以容器窗口为父窗口创建一个子窗口。Web页面加载程序加载浏览器内核,在子窗口内加载Web页面。应用程序接收Web页面加载程序回传的信令,并进行相应的处理,返回处理结果给Web页面加载程序。Web页面加载程序再返回处理结果给浏览器内核。应用程序发送信令指示Web页面加载程序执行脚本函数。Web页面加载程序接收到信令后执行脚本函数,并向应用程序回传函数执行结果。

综上所述,本申请所提供的加载Web页面的方法,设置专门用于加载Web页面、渲染Web页面的Web页面加载程序。当应用程序需要加载Web页面时,应用程序向Web页面加载程序发送页面加载信令,使Web页面加载程序在应用程序指定的窗口区域加载并展示Web页面。当应用程序不再需要显示Web页面时,可直接关闭Web页面加载程序,能够实现浏览器内存等资源的完全回收。另外,Web页面加载程序,作为本地服务端程序,可以同时为本地多个应用程序提供Web页面加载服务,可以避免一台机器上多个应用程序各自加载运行自己的浏览器内核实例,能够进一步减少总体资源消耗。同时,该加载Web页面的方法有效降低了应用程序和浏览器内核的耦合度,切换浏览器内核,只需要更新Web页面加载程序,不需要修改和重新编译应用程序。

本申请还提供了一种加载Web页面的装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图3,图3为本申请实施例所提供的一种加载Web页面的装置的示意图,结合图3所示,该装置包括:

创建模块10,用于创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;

构建模块20,用于构建页面加载信令;

发送模块30,用于通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

第二发送模块,用于通过所述命名管道向所述Web页面加载程序发送脚本函数调用信令,以使所述Web页面加载程序根据所述脚本函数调用信令调用所述浏览器内核的接口执行相应的脚本函数。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

第三发送模块,用于修改所述Web页面的容器窗口的大小后,通过所述命名管道向所述Web页面加载程序发送窗口修改信令,以使所述Web页面加载程序根据所述窗口修改信令改变所述子窗口的大小。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

第四发送模块,用于通过所述命名管道向所述Web页面加载程序发送页面销毁信令,以使所述Web页面加载程序根据所述页面加载信令销毁所述子窗口与所述Web页面;

销毁模块,用于销毁所述Web页面的容器窗口。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

终止模块,用于在所述Web页面加载程序销毁所有已加载的所述Web页面后,终止运行所述Web页面加载程序。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

检查模块,用于重新显示Web页面时或定时检查所述Web页面的容器窗口下是否存在所述子窗口;

重新执行模块,用于若所述Web页面的容器窗口下不存在所述子窗口,则重新触发所述Web页面加载程序运行,与所述Web页面加载程序创建的命令管道服务端连接,并通过所述命名管道向Web页面加载程序发送所述页面加载信令。

在上述实施例的基础上,作为一种具体的实施方式,还包括:

接收模块,用于接收所述Web页面加载程序返回的信令;

处理模块,用于根据所述信令进行相应的处理,并返回处理结果。

本申请还提供了一种加载Web页面的设备,参考图4所示,该设备包括存储器1和处理器2。

存储器1,用于存储计算机程序;

处理器2,用于执行计算机程序实现如下的步骤:

创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;构建页面加载信令;通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:

创建Web页面的容器窗口;所述Web页面的容器窗口与Web页面一一对应;构建页面加载信令;通过命名管道向Web页面加载程序发送所述页面加载信令,以使所述Web页面加载程序根据所述页面加载信令创建所述Web页面的容器窗口的子窗口,将所述子窗口铺满所述Web页面的容器窗口,并在所述子窗口内使用浏览器内核加载对应的Web页面。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的加载Web页面的方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。

相关技术
  • 一种性能测试方法、装置、电子设备以及存储介质
  • Monkey测试方法、装置、电子设备及计算机可读存储介质
  • 保险产品的测试方法及装置、存储介质及电子设备
  • 联网软件升级测试方法、装置、电子设备和存储介质
  • 接口测试方法、接口测试装置、电子设备及存储介质
  • 接口性能测试方法、装置、电子设备及存储介质
技术分类

06120116332915