CN103246739B - 多WebView的网页浏览控制方法及浏览器 - Google Patents
多WebView的网页浏览控制方法及浏览器 Download PDFInfo
- Publication number
- CN103246739B CN103246739B CN201310182541.6A CN201310182541A CN103246739B CN 103246739 B CN103246739 B CN 103246739B CN 201310182541 A CN201310182541 A CN 201310182541A CN 103246739 B CN103246739 B CN 103246739B
- Authority
- CN
- China
- Prior art keywords
- webview
- page
- reverse
- reverse list
- dom
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提出了一种多WebView(网页视图)的网页浏览控制方法,包括以下步骤:浏览器加载页面,并在页面中注入监控模块,其中,浏览器包括多个WebView,且在浏览器的应用层中维护有前进后退列表,多个WebView共用前进后退列表;监控模块检测用户的前进或后退操作,并拦截前进或后退操作;监控模块调用前进后退列表根据前进或后退操作进行控制。根据本发明实施例的方法,可减少客户端安装包大小,并采用多WebView浏览网页,提高网页浏览过程中前进后退速度,并可以记住浏览历史的网页的位置。本发明还提出了一种浏览器。
Description
技术领域
本发明涉及浏览器技术领域,特别涉及一种多WebView的网页浏览控制方法及浏览器。
背景技术
目前,由于单WebView(网页视图)浏览网页过程中,网页前进后退需要重新render(渲染)页面内容,会导致前进后退过程中用户需要等较长时间才能看到完整的页面内容,特别是大PC(个人电脑)页面。对于部分页面,重新render的页面内容可能还会默认从头开始展示,没有记住用户上次浏览的页面位置。因此,使用单WebView浏览页面在用户体验上较差。
UC手机浏览器:在自有内核中实现,全部用C++来开发,安装包太大。
遨游手机浏览器:在应用层实现。没有拦截页面内浏览操作,页面内无法正常操作前进后退。没有区分多View(视图)和单View打开,特定页面使用多View打开会出问题。
天天手机浏览器:和遨游手机浏览器一样,在应用层实现。没有拦截页面内浏览操作,页面内无法正常操作前进后退。没有区分多View和单View打开,特定页面使用多View打开会出问题。
发明内容
本发明的目的旨在至少解决所述技术缺陷之一。
为此,本发明的一个目的在于提出一种多WebView的网页浏览控制方法。该方法可提高网页浏览过程中前进后退速度。
本发明的另一个目的在于提出一种浏览器。
为达到上述目的,本发明第一方面的实施例公开了一种多WebView的网页浏览控制方法,包括以下步骤:浏览器加载页面,并在所述页面中注入监控模块,其中,所述浏览器包括多个WebView,且在所述浏览器的应用层中维护有前进后退列表,所述多个WebView共用所述前进后退列表;所述监控模块检测用户的前进或后退操作,并拦截所述前进或后退操作;以及所述监控模块调用所述前进后退列表根据所述前进或后退操作进行控。
根据本发明实施例的多WebView的网页浏览控制方法,全部在应用层实现,无需修改webkit(浏览器引擎)内核,无需额外的webkit.so库(浏览器引擎库),既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该方法只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块控制其操作顺序与用户浏览操作一致。本发明实施例的方法采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。
另外,根据本发明上述实施例的多WebView的网页浏览控制方法还可以具有如下附加的技术特征:
在一些示例中,还包括:所述监控模块监听所述页面中用户的页面点击事件;以及所述监控模块根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载。
在一些示例中,所述监控模块根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载进一步包括:所述监控模块获取所述页面点击事件对应的页面元素所在的文件对象模型DOM(文件对象模型)节点;所述监控模块获取与所述DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数;以及所述监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载。
在一些示例中,2≤N≤5。
在一些示例中,所述监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载进一步包括:所述监控模块判断所述N层DOM父节点和DOM子节点中是否存在标签<a>(锚)以及是否含有href(超文本引用)属性;如果判断存在标签<a>且含有href属性,则进一步判断所述href属性值是否满足预设条件;如果判断满足所述预设条件,则启动单个WebView加载,否则启动多个WebView加载。
在一些示例中,所述预设条件为以下条件中的任一条:以javascript(基于对象和事件驱动并具有相对安全性的客户端脚本语言)开头、以#号开头、undefined和null。
在一些示例中,其中,所述前进后退列表包括多个前进后退表项,每个所述前进后退表项包括页面的地址信息、使用加载所用的WebView以及所述页面在所述WebView中前进后退列表中的位置。
在一些示例中,还包括:在页面开始加载的回调接口onPageStarted(WebView中的一种方法)中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面位置的下一位;在开始加载页面资源的回调接口onLoadResource(WebView中的一种方法)中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,其中,所述页面的Url(统一资源定位符)为对应WebView当前页面的Url;在页面结束加载的回调接口onPageFinished(WebView中的一种方法)中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置。
在一些示例中,还包括:更新所述浏览器的应用层中的前进后退列表。
在一些示例中,所述监控模块调用所述前进后退列表根据所述前进或后退操作进行控制进一步包括:根据所述前进后退列表获取所述前进后退列表中的当前前进后退表项以及目标前进后退表项;以及对所述当前前进后退表项和目标前进后退表项进行校验,并根据校验结果进行控制。
在一些示例中,还包括:创建并维护WebView池,其中,当所述WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。
在一些示例中,当所述WebView池中WebView的个数大于第一预设数值时,则对所述WebView池中至少部分的WebView进行回收。
在一些示例中,根据页面类型和窗口类型对所述WebView池中至少部分的WebView进行回收。
在一些示例中,其特征在于,对于单窗口,如果当前页面为大页面,则销毁该窗口对应的该WebView;对于单窗口,如果当前页面为小页面,则销毁该窗口对应的该WebView;对于多窗口,如果当前页面为大页面,则销毁个WebView;以及对于多窗口,如果当前页面为小页面,则销毁个WebView。
本发明第二方面的实施例公开了一种浏览器,包括多个WebView;前进后退列表维护模块,用于在所述浏览器的应用层中维护前进后退列表,其中,所述多个WebView共用所述前进后退列表;加载模块,用于加载页面,并在所述页面中注入监控模块;所述监控模块,用于检测用户的前进或后退操作,并拦截所述前进或后退操作,以及调用所述前进后退列表根据所述前进或后退操作进行控制。
根据本发明实施例的浏览器,全部在应用层实现,无需修改webkit内核,无需额外的webkit.so库,既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该浏览器只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块控制其操作顺序与用户浏览操作一致。本发明实施例的浏览器采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。
另外,根据本发明上述实施例的浏览器还可以具有如下附加的技术特征:
在一些示例中,所述监控模块,还用于监听所述页面中用户的页面点击事件,并根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载。
在一些示例中,所述监控模块获取所述页面点击事件对应的页面元素所在的文件对象模型DOM节点,并获取与所述DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数,以及根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载。
在一些示例中,2≤N≤5。
在一些示例中,所述监控模块在判断所述N层DOM父节点和DOM子节点中存在标签<a>且含有href属性时,进一步判断所述href属性值是否满足预设条件,且在判断满足所述预设条件之后启动单个WebView加载,否则启动多个WebView加载。
在一些示例中,所述预设条件为以下条件中的任一条:以javascript开头、以#号开头、undefined和null。
在一些示例中,其中,所述前进后退列表包括多个前进后退表项,每个所述前进后退表项包括页面的地址信息、使用加载所用的WebView以及所述页面在所述WebView中前进后退列表中的位置。
在一些示例中,所述前进后退列表维护模块还用于:在页面开始加载的回调接口onPageStarted中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面位置的下一位;在开始加载页面资源的回调接口onLoadResource中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,其中,所述页面的Url为对应WebView当前页面的Url;在页面结束加载的回调接口onPageFinished中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置。
在一些示例中,所述前进后退列表维护模块还用于更新所述浏览器的应用层中的前进后退列表。
在一些示例中,所述监控模块还用于根据所述前进后退列表获取所述前进后退列表中的当前前进后退表项以及目标前进后退表项,并对所述当前前进后退表项和目标前进后退表项进行校验。
在一些示例中,还包括WebView池维护模块,用于创建并维护WebView池,其中,当所述WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。
在一些示例中,当所述WebView池中WebView的个数大于第一预设数值时,所述WebView池维护模块对所述WebView池中至少部分的WebView进行回收。
在一些示例中,所述WebView池维护模块根据页面类型和窗口类型对所述WebView池中至少部分的WebView进行回收。
在一些示例中,对于单窗口,如果当前页面为大页面,则所述WebView池维护模块销毁该窗口对应的该WebView;对于单窗口,如果当前页面为小页面,则所述WebView池维护模块销毁该窗口对应的该WebView;对于多窗口,如果当前页面为大页面,则所述WebView池维护模块销毁个WebView;以及对于多窗口,如果当前页面为小页面,则所述WebView池维护模块销毁个WebView。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明所述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明一个实施例的多WebView的网页浏览控制方法的流程图;以及
图2是根据本发明一个实施例的多WebView的网页浏览控制方法的浏览器进行页面加载的流程图;
图3是根据本发明一个实施例的多WebView的网页浏览控制方法的WebView创建流程图;
图4是根据本发明一个实施例的多WebView的网页浏览控制方法的WebView回收流程图;以及
图5是根据本发明一个实施例的浏览器的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解所述术语的具体含义。
以下结合附图描述根据本发明实施例的多WebView的网页浏览控制方法及浏览器。
图1是根据本发明一个实施例的多WebView的网页浏览控制方法的流程图。如图所示,该多WebView的网页浏览控制方法,包括如下步骤:
步骤S101:浏览器加载页面,并在页面中注入监控模块,其中,浏览器包括多个WebView,且在浏览器的应用层中维护有前进后退列表,多个WebView共用前进后退列表。
步骤S102:监控模块检测用户的前进或后退操作,并拦截前进或后退操作。
步骤S103:监控模块调用前进后退列表根据前进或后退操作进行控制。
根据本发明实施例的多WebView的网页浏览控制方法,全部在应用层实现,无需修改webkit内核,无需额外的webkit so库,既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该方法只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块控制其操作顺序与用户浏览操作一致。本发明实施例的方法采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。
在本发明的一个实施例中,监控模块还具有如下功能:
1)监控模块监听页面中用户的页面点击事件。
2)监控模块根据页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载。
具体地,监控模块根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载,进一步包括:
(1)监控模块获取页面点击事件对应的页面元素所在的文件对象模型DOM节点。
(2)监控模块获取与DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数。在本发明的具体示例中,2≤N≤5。
(3)监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载。
在上述示例中,监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载,进一步包括:
(1)监控模块判断N层DOM父节点和DOM子节点中是否存在标签<a>以及是否含有href属性。
(2)如果判断存在标签<a>且含有href属性,则进一步判断href属性值是否满足预设条件。
(3)如果判断满足预设条件,则启动单个WebView加载,否则启动多个WebView加载。其中,预设条件为以下条件中的任一条:以javascript开头、以#号开头、undefined和null。
作为一个具体的例子,例如对于某些特定页面,如ajax局部加载,直接Get请求访问该ajax请求Url(地址)很多情况下获取不到ajax请求的数据,如果用多View去加载,会加载不到数据。又比如,支持html5 session storage(HTML5标准版本的会话存储)的页面,html5 session storage数据不能在多View间共享,如果用多View去加载,虽然也是Get请求(一种HTTP请求),但可能有些页面Get请求的参数是存储在session storage里,新的WebView拿不到请求参数,可能会导致页面加载不到相应的数据。因此,不能所有页面加载都采用多View策略,需要一定的策略进行区分。由于此策略,使得诸如百度浏览器浏览模块的多View策略要明显优于遨游、天天等套壳浏览器,具体策略如下:
页面加载过程中,注入js(javascript)函数(即监控模块),通过注入的js函数让页面的document.body(文档的主题)监听onclick(单击事件)事件(即监控模块监听页面中用户的页面点击事件),这样就可以检测到用户的页面点击事件。用户点击页面元素时,该js函数获取点击事件所在的dom节点,从该节点开始遍历N层(例如N=3层)父节点和子节点,如果这些节点中有标签<a>并且含有href属性,则说明本次操作点击的是一个普通Get请求的链接。接着,获取该节点的href属性值,href属性值如果满足以下条件中的任何一条,则使用单View加载,否则使用多View加载:
1)以javascript开头;2)以#号开头;3)undefined;4)null。
此外,由于页面内点击前进后退按钮默认会在页面所在的WebView做前进后退处理,但以上多View机制使得要前进后退的页面可能会在其它WebView中。因此,该方法通过引入监控模块,即可通过注入js函数(监控模块),重载js的window.history.back、window.history.forward、window.history.go(javascript脚本语言中的方法)等方法,在js函数里调用Android应用层的方法来自行实现多View的前进后退。
在上述的示例中,监控模块的实现,即Js注入。
首先,在创建webview的时候,注入一个Java对象到Javascript上下文中,例如表1所示:
表1
然后,在网页开始绘图的时候,例如调用webview的loadUrl方法,去加载表2中的文本字符串:
表2
这样,当用户点击页面上的链接时,Java层的BdWebJsEngine(接入方法引擎)的onClick方法就会收到点击的Json(一种数据交换格式)数据,进而往下做进一步的处理。
在本发明的一个实施例中,前进后退列表包括多个前进后退表项,每个前进后退表项包括页面的地址信息、使用加载所用的WebView以及页面在WebView中前进后退列表中的位置。具体地,前进后退列表是多WebView策略最基本的数据结构,如前面概要所述,Android Webkit没有一个很合适的接口来让应用层新增一个前进后退表项。该方法采用先在多个接口里增加前进后退表项,后面使用的列表时再做过滤的方式。其中,前进后退表项的数据结构包括该页面的Url(页面的地址信息)、使用加载所用的WebView以及该页面在该WebView本身前进后退列表里的位置等。
进一步地,还包括:在页面开始加载的回调接口onPageStarted中增加新的前进后退项,并将页面在对应WebView本身前进后退列表里的位置设为WebView当前页面位置的下一位。即在页面开始加载的回调接口onPageStarted(WebView view,String url,Bitmapfavicon)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面位置的下一位。
在开始加载页面资源的回调接口onLoadResource中增加新的前进后退项,并将页面在对应WebView本身前进后退列表里的位置设为WebView当前页面的位置,其中,页面的Url为对应WebView当前页面的Url。即在开始加载页面资源的回调接口onLoadResource(WebView aView,String aUrl)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面的位置,该页面的Url为该WebView当前页面的Url。
在页面结束加载的回调接口onPageFinished中增加新的前进后退项,并将页面在对应WebView本身前进后退列表里的位置设为WebView当前页面的位置。即在页面结束加载的回调接口onPageFinished(WebView aView,String aUrl)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面的位置。
更近一步地,该方法还包括:更新所述浏览器的应用层中的前进后退列表。具体而言,由于WebView的前进后退历史记录是固定的。通过上述的回调方式里检测、新增前进后退项,可以保证页面加载过程中总会新增前进后退项,以防止少页问题。如果上述回调方式要加入新的前进后退项,会检测要加的前进后退项(例如用B表示)所在的WebView的指定位置是否已经有之前加入的前进后退项(例如用A表示)。如果没有,则直接新增前进后退项;如果有,判断A和B哪个前进后退项的Url真的在WebView的指定位置上,如果是A,则B不加到前进后退列表里,如果是B,则用B替换A。
如图2所示,本发明实施例的方法的浏览器对WebView进行加载过程包括以下步骤:
步骤S201:注入Js(及注入监控模块),监听onclick事件。
步骤S202:document.onclick。(ClickData{Url,Node})(一种Web View的方法)。
步骤S203:shouldOverrideUriLoading(一种Web View的方法)。
步骤S204:分析点击的链接。
步骤S2051:单View,转至步骤S206。
步骤S2052:多View,从WebView池里获取新的WebView,并转至步骤S206。
步骤S206:onPageStarted。
步骤S207:添加历史记录。
步骤S208:onLoadResource。
步骤S209:添加或更新历史记录。
步骤S210:onPageFinished。
步骤S211:添加或更新历史记录。
步骤S212:启动回收策略回收WebView。
如图3所示,本发明实施例的方法中WebView的创建包括以下步骤:
步骤S301:loadUrl(加载Url)。
步骤S302:判断是否还有webview(Fetch webview),如果没有webview,则执行步骤S303,如果还有webview,则执行步骤S304。
步骤S303:池里(即webview池里)创建三个,即创建三个webview。
步骤S304:池里直接获取,即从池里直接获取webview。
在本发明的一个实施例中,监控模块调用前进后退列表根据前进或后退操作进行控制进一步包括:根据前进后退列表获取前进后退列表中的当前前进后退表项以及目标前进后退表项;对当前前进后退表项和目标前进后退表项进行校验,并根据校验结果进行控制。
具体地说,应用层维护了多View的前进后退列表。要前进后退前,每个WebView加载的页面已经确定。为了确保前进后退列表数据的正确性,在前进后退前,对前进后退列表的当前item和要前进后退的目标item做校验,校验前进后退item是否真的在其WebView的指定位置上。如果不在,则往前遍历该WebView自身的前进后退列表,找到真正的位置后更新多View前进后退item的位置。如果找不到真正的位置,则把该item从多View前进后退列表中删除。校验完后,前进后退就简单了。通过目标item的WebView属性和所在WebView的位置属性,即可知道要切换到哪个WebView的哪个位置上。
在本发明的一个实施例中,该方法还包括:创建并维护WebView池,其中,当所述WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。进一步地,当WebView池中WebView的个数大于第一预设数值时,则对所述WebView池中至少部分的WebView进行回收。
在上述示例中,根据页面类型和窗口类型对WebView池中至少部分的WebView进行回收。例如:对于单窗口,如果当前页面为大页面,则销毁该窗口对应的(WebView使用总数-8)个WebView;对于单窗口,如果当前页面为小页面,则销毁该窗口对应的(WebView使用总数-12)个WebView;对于多窗口,如果当前页面为大页面,则销毁(WebView使用总数-8)个WebView;对于多窗口,如果当前页面为小页面,则销毁(WebView使用总数/2)个WebView。
如前所述,多WebView策略,本质上是以空间换取时间,虽然提高了页面浏览速度,但WebView数越多所耗的内存就越大。因此,根据页面类型和窗口类型对WebView池中至少部分的WebView进行回收的策略大致如下:
1)维护一个多窗口共用的WebView池,如果WebView池里已经没有WebView,每次创建三个WebView,以避免每次点击链接前创建WebView导致点击链接慢的问题。
2)大页面的多View数上限是8个,小页面的多View上限是12个。页面加载完、前进后退都会检查当前页面是否是大页面。如果多窗口总共使用的WebView数达到大小页面的上限数,则开始回收WebView。单窗口和多窗口有不同的WebView回收策略。
3)对于单窗口,如果当前页面是大页面,则销毁该窗口(WebView使用总数-8)个WebView;如果当前页面是小页面,则销毁该窗口(WebView使用总数-12)个WebView。
4)对于多窗口,如果当前页面是大页面,则销毁(WebView使用总数-8)个WebView;如果当前页面是小页面,则销毁(WebView使用总数/2)个WebView。后台窗口按最近最不常访问的窗口排序(前台窗口最后销毁),依次销毁WebView数大于4个的窗口的WebView。如果所有窗口的WebView数没有删够,则重复此步骤,但不再要求窗口的WebView数大于4个才可以销毁。
5)窗口内WebView销毁策略:依次销毁离当前前台WebView最远的WebView(前台WebView不销毁)。如果要销毁的WebView有不只一个历史记录,则不销毁WebView,而是通过加载about:blank空白页然后freeMemory的方法来回收页面内存(Page Cache)。
6)系统可使用的内存低于40M或系统接口onLowMemory(存储器)回调时,前台窗口销毁一半的Webview,后台窗口销毁所有的非前台WebView。并在前进后退及页面加载完时,启用上述回收策略。
作为一个具体的例子,如图4所示,本发明实施例的方法的webview的回收流程包括以下步骤:
步骤S401:goBack、goForward、onPageFinish(即监测点击动作)。
步骤S402:是否单窗口,如果是则转至步骤S403,否则执行步骤S406。
步骤S403:是否大页面,如果是则执行步骤S404,否则执行步骤S405。
步骤S404:销毁(webview使用总数-8)个webview。
步骤S405:销毁(webview使用总数-12)个webview。
步骤S406:是否大页面,如果是,则执行步骤S407,否则执行步骤S408。
步骤S407:销毁(webview使用总数-8)个webview。
步骤S408:销毁(webview使用总数/8)个webview。
步骤S409:后台窗口按最近最不常访问的窗口排序,前台窗口排最后。
步骤S410:遍历排过序的窗口列表。
步骤S411:窗口webview数是否大于4。如果是则执行步骤周S412,否则执行步骤S410。
步骤S412:依次回收离前台webview最远的webview。
步骤S413:判断回收的webview历史记录数。如果不大于1则执行步骤S414,否则执行步骤S415。
步骤S414:Destory webview(销毁webview)。
步骤S415:加载about:blank(打开浏览器空白页的命令)。
步骤S416:freeMemory(释放内存)。
步骤S417:webview是否全部回收完?如果否则执行步骤S418:
步骤S418:遍历排过序的窗口列表,并转至步骤S412。
根据本发明实施例的多WebView的网页浏览控制方法,全部在应用层实现,无需修改webkit内核,无需额外的webkit.so库,既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该方法只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块控制其操作顺序与用户浏览操作一致。本发明实施例的方法采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。另外,该方法应用一套多WebView的内存回收机制,提高页面浏览速度的同时降低WebView所耗内存。
图5是根据本发明一个实施例的浏览器的结构图。如图5所示,该浏览器500,包括:多个WebView510、前进后退列表维护模块520、监控模块530和加载模块540。
其中,前进后退列表维护模块520,用于在浏览器的应用层中维护前进后退列表,其中,多个WebView510共用前进后退列表。加载模块540用于加载页面,并在页面中注入监控模块530。监控模块530用于检测用户的前进或后退操作,并拦截前进或后退操作,以及调用前进后退列表根据前进或后退操作进行控制。
根据本发明实施例的浏览器,全部在应用层实现,无需修改webkit内核,无需额外的webkit so库,既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该浏览器只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块530控制其操作顺序与用户浏览操作一致。本发明实施例的浏览器采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。
在本发明的一个实施例中,监控模块530还用于监听所述页面中用户的页面点击事件,并根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView510加载。
具体地,监控模块530获取页面点击事件对应的页面元素所在的文件对象模型DOM节点,并获取与DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数,以及根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView510加载。例如:2≤N≤5。
在上述示例中,监控模块530在判断N层DOM父节点和DOM子节点中存在标签<a>且含有href属性时,进一步判断href属性值是否满足预设条件,且在判断满足预设条件之后启动单个WebView加载,否则启动多个WebView510加载。其中,预设条件为以下条件中的任一条:以javascript开头、以#号开头、undefined和null。
作为一个具体的例子,例如对于某些特定页面,如ajax局部加载,直接Get请求访问该ajax请求Url(地址)很多情况下获取不到ajax请求的数据,如果用多View去加载,会加载不到数据。又比如,支持html5 session storage的页面,html5 session storage数据不能在多View间共享,如果用多View去加载,虽然也是Get请求,但可能有些页面Get请求的参数是存储在session storage里,新的WebView拿不到请求参数,可能会导致页面加载不到相应的数据。因此,不能所有页面加载都采用多View策略,需要一定的策略进行区分。由于此策略,使得诸如百度浏览器浏览模块的多View策略要明显优于遨游、天天等套壳浏览器,具体策略如下:
页面加载过程中,注入js函数(即监控模块530),通过注入的js函数让页面的document.body监听onclick事件(即监控模块530监听页面中用户的页面点击事件),这样就可以检测到用户的页面点击事件。用户点击页面元素时,该js函数获取点击事件所在的dom节点,从该节点开始遍历N层(例如N=3层)父节点和子节点,如果这些节点中有标签<a>并且含有href属性,则说明本次操作点击的是一个普通Get请求的链接。接着,获取该节点的href属性值,href属性值如果满足以下条件中的任何一条,则使用单View加载,否则使用多View加载:
1)以javascript开头;2)以#号开头;3)undefined;4)null。
此外,由于页面内点击前进后退按钮默认会在页面所在的WebView做前进后退处理,但以上多View机制使得要前进后退的页面可能会在其它WebView中。因此,该浏览器通过引入监控模块530,即可通过注入js函数(监控模块530),重载js的window.history.back、window.history.forward、window.history.go等方法,在js函数里调用Android应用层的方式来自行实现多View的前进后退。
在上述的示例中,监控模块530的实现,即Js注入。
首先,在创建webview的时候,注入一个Java对象到Javascript上下文中,例如以上表1所示。
然后,在网页开始绘图的时候,例如调用webview的loadUrl方法,去加载表2中的文本字符串。这样,当用户点击页面上的链接时,Java层的BdWebJsEngine的onClick方法就会收到点击的Json数据,进而往下做进一步的处理。
在本发明的一个实施例中,前进后退列表包括多个前进后退表项,每个所述前进后退表项包括页面的地址信息、使用加载所用的WebView以及所述页面在所述WebView中前进后退列表中的位置。具体地,前进后退列表是多WebView策略最基本的数据结构,如前面概要所述,Android Webkit没有一个很合适的接口来让应用层新增一个前进后退表项。该浏览器采用先在多个接口里增加前进后退表项,后面使用的列表时再做过滤的方式。其中,前进后退表项的数据结构包括该页面的Url(页面的地址信息)、使用加载所用的WebView以及该页面在该WebView本身前进后退列表里的位置等。
进一步而言,前进后退列表维护模块520还用于:在页面开始加载的回调接口onPageStarted中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面位置的下一位,即在页面开始加载的回调接口onPageStarted(WebView view,String url,Bitmap favicon)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面位置的下一位,即在开始加载页面资源的回调接口onLoadResource(WebView aView,String aUrl)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面的位置,该页面的Url为该WebView当前页面的Url;在开始加载页面资源的回调接口onLoadResource中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,其中,所述页面的Url为对应WebView当前页面的Url;在页面结束加载的回调接口onPageFinished中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,即在页面结束加载的回调接口onPageFinished(WebView aView,String aUrl)里增加一个新的前进后退项,该页面在该WebView本身前进后退列表里的位置设为该WebView当前页面的位置。
更近一步地,前进后退列表维护模块520还用于更新所述浏览器的应用层中的前进后退列表。具体而言,由于WebView的前进后退历史记录是固定的。通过上述的回调方式里检测、新增前进后退项,可以保证页面加载过程中总会新增前进后退项,以防止少页问题。如果上述回调方式要加入新的前进后退项,会检测要加的前进后退项(例如用B表示)所在的WebView的指定位置是否已经有之前加入的前进后退项(例如用A表示)。如果没有,则直接新增前进后退项;如果有,判断A和B哪个前进后退项的Url真的在WebView的指定位置上,如果是A,则B不加到前进后退列表里,如果是B,则用B替换A。
在本发明的一个实施例中,监控模块530还用于根据前进后退列表获取前进后退列表中的当前前进后退表项以及目标前进后退表项,并对当前前进后退表项和目标前进后退表项进行校验。
具体地说,应用层维护了多View的前进后退列表。要前进后退前,每个WebView加载的页面已经确定。为了确保前进后退列表数据的正确性,在前进后退前,对前进后退列表的当前item和要前进后退的目标item做校验,校验前进后退item是否真的在其WebView的指定位置上。如果不在,则往前遍历该WebView自身的前进后退列表,找到真正的位置后更新多View前进后退item的位置。如果找不到真正的位置,则把该item从多View前进后退列表中删除。校验完后,前进后退就简单了。通过目标item的WebView属性和所在WebView的位置属性,即可知道要切换到哪个WebView的哪个位置上。
在本发明的一个实施例中,该浏览器还包括:WebView池维护模块550,用于创建并维护WebView池,其中,当WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。进一步地,当WebView池中WebView的个数大于第一预设数值时,WebView池维护模块对WebView池中至少部分的WebView进行回收。
在上述示例中,WebView池维护模块550根据页面类型和窗口类型对WebView池中至少部分的WebView进行回收。例如:对于单窗口,如果当前页面为大页面,则WebView池维护模块550销毁该窗口对应的该WebView;对于单窗口,如果当前页面为小页面,则WebView池维护模块550销毁该窗口对应的该WebView;对于多窗口,如果当前页面为大页面,则WebView池维护模块550销毁个WebView;对于多窗口,如果当前页面为小页面,则WebView池维护模块销毁个WebView。
如前所述,多WebView策略,本质上是以空间换取时间,虽然提高了页面浏览速度,但WebView数越多所耗的内存就越大。因此,根据页面类型和窗口类型对WebView池中至少部分的WebView进行回收的策略大致如下:
1)维护一个多窗口共用的WebView池,如果WebView池里已经没有WebView,每次创建三个WebView,以避免每次点击链接前创建WebView导致点击链接慢的问题。
2)大页面的多View数上限是8个,小页面的多View上限是12个。页面加载完、前进后退都会检查当前页面是否是大页面。如果多窗口总共使用的WebView数达到大小页面的上限数,则开始回收WebView。单窗口和多窗口有不同的WebView回收策略。
3)对于单窗口,如果当前页面是大页面,则销毁该窗口(WebView使用总数-8)个WebView;如果当前页面是小页面,则销毁该窗口(WebView使用总数-12)个WebView。
4)对于多窗口,如果当前页面是大页面,则销毁(WebView使用总数-8)个WebView;如果当前页面是小页面,则销毁(WebView使用总数/2)个WebView。后台窗口按最近最不常访问的窗口排序(前台窗口最后销毁),依次销毁WebView数大于4个的窗口的WebView。如果所有窗口的WebView数没有删够,则重复此步骤,但不再要求窗口的WebView数大于4个才可以销毁。
5)窗口内WebView销毁策略:依次销毁离当前前台WebView最远的WebView(前台WebView不销毁)。如果要销毁的WebView有不只一个历史记录,则不销毁WebView,而是通过加载about:blank空白页然后freeMemory的方法来回收页面内存(Page Cache)。
6)系统可使用的内存低于40M或系统接口onLowMemory回调时,前台窗口销毁一半的Webview,后台窗口销毁所有的非前台WebView。并在前进后退及页面加载完时,启用上述回收策略。
根据本发明实施例的浏览器,全部在应用层实现,无需修改webkit内核,无需额外的webkit so库,既可减少客户端安装包大小,同时可兼容百度手机浏览器的系统内核和自有内核。另外,该浏览器只依赖底层的接口,应用层维护一套多WebView的前进后退列表,该列表与底层WebView数据保持一致,操作顺序也与用户浏览操作保持一致,并且通过一套前进后退列表维护策略对前进后退列表进行维护,从而保持与底层WebView数据的一致,并可通过监控模块530控制其操作顺序与用户浏览操作一致。本发明实施例的浏览器采用多WebView浏览网页,提高网页浏览过程中前进后退速度并可以记住浏览历史的网页的位置。另外,该浏览器应用一套多WebView的内存回收机制,提高页面浏览速度的同时降低WebView所耗内存。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对所述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (24)
1.一种多网页视图WebView的网页浏览控制方法,其特征在于,包括以下步骤:
浏览器加载页面,并在所述页面中注入监控模块,其中,所述浏览器包括多个WebView,且在所述浏览器的应用层中维护有前进后退列表,所述多个WebView共用所述前进后退列表;
所述监控模块检测用户的前进或后退操作,并拦截所述前进或后退操作;以及
所述监控模块调用所述前进后退列表根据所述前进或后退操作进行控制,
其中,当WebView池中WebView的个数大于第一预设数值时,则根据页面类型和窗口类型对所述WebView池中至少部分的WebView进行回收。
2.如权利要求1所述的方法,其特征在于,还包括:
所述监控模块监听所述页面中用户的页面点击事件;以及
所述监控模块根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载。
3.如权利要求2所述的方法,其特征在于,所述监控模块根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载进一步包括:
所述监控模块获取所述页面点击事件对应的页面元素所在的文件对象模型DOM节点;
所述监控模块获取与所述DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数;以及
所述监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载。
4.如权利要求3所述的方法,其特征在于,2≤N≤5。
5.如权利要求3所述的方法,其特征在于,所述监控模块根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载进一步包括:
所述监控模块判断所述N层DOM父节点和DOM子节点中是否存在标签<a>以及是否含有href属性;
如果判断存在标签<a>且含有href属性,则进一步判断所述href属性值是否满足预设条件;
如果判断满足所述预设条件,则启动单个WebView加载,否则启动多个WebView加载。
6.如权利要求5所述的方法,其特征在于,所述预设条件为以下条件中的任一条:
以javascript开头、以#号开头、undefined和null。
7.如权利要求1-6任一项所述的方法,其特征在于,其中,所述前进后退列表包括多个前进后退表项,每个所述前进后退表项包括页面的地址信息、使用加载所用的WebView以及所述页面在所述WebView中前进后退列表中的位置。
8.如权利要求1-6任一项所述的方法,其特征在于,还包括:
在页面开始加载的回调接口onPageStarted中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面位置的下一位;
在开始加载页面资源的回调接口onLoadResource中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,其中,所述页面的Url为对应WebView当前页面的Url;
在页面结束加载的回调接口onPageFinished中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置。
9.如权利要求8所述的方法,其特征在于,还包括:
更新所述浏览器的应用层中的前进后退列表。
10.如权利要求1所述的方法,其特征在于,所述监控模块调用所述前进后退列表根据所述前进或后退操作进行控制进一步包括:
根据所述前进后退列表获取所述前进后退列表中的当前前进后退表项以及目标前进后退表项;以及
对所述当前前进后退表项和目标前进后退表项进行校验,并根据校验结果进行控制。
11.如权利要求1所述的方法,其特征在于,还包括:
创建并维护WebView池,其中,当所述WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。
12.如权利要求1所述的方法,其特征在于,
对于单窗口,如果当前页面为大页面,则销毁该窗口对应的该WebView;
对于单窗口,如果当前页面为小页面,则销毁该窗口对应的该WebView;
对于多窗口,如果当前页面为大页面,则销毁该WebView;以及
对于多窗口,如果当前页面为小页面,则销毁该WebView。
13.一种浏览器,其特征在于,包括
多个WebView;
前进后退列表维护模块,用于在所述浏览器的应用层中维护前进后退列表,其中,所述多个WebView共用所述前进后退列表;
加载模块,用于加载页面,并在所述页面中注入监控模块;
所述监控模块,用于检测用户的前进或后退操作,并拦截所述前进或后退操作,以及调用所述前进后退列表根据所述前进或后退操作进行控制,
其中,当WebView池中WebView的个数大于第一预设数值时,WebView池维护模块根据页面类型和窗口类型对所述WebView池中至少部分的WebView进行回收。
14.如权利要求13所述的浏览器,其特征在于,所述监控模块,还用于监听所述页面中用户的页面点击事件,并根据所述页面点击事件对应的页面元素判断启动单个WebView加载或多个WebView加载。
15.如权利要求14所述的浏览器,其特征在于,所述监控模块获取所述页面点击事件对应的页面元素所在的文件对象模型DOM节点,并获取与所述DOM节点相关的N层DOM父节点和DOM子节点,其中,N为正整数,以及根据N层DOM父节点和DOM子节点判断启动单个WebView加载或多个WebView加载。
16.如权利要求15所述的浏览器,其特征在于,2≤N≤5。
17.如权利要求15所述的浏览器,其特征在于,所述监控模块在判断所述N层DOM父节点和DOM子节点中存在标签<a>且含有href属性时,进一步判断所述href属性值是否满足预设条件,且在判断满足所述预设条件之后启动单个WebView加载,否则启动多个WebView加载。
18.如权利要求17所述的浏览器,其特征在于,所述预设条件为以下条件中的任一条:
以javascript开头、以#号开头、undefined和null。
19.如权利要求13所述的浏览器,其特征在于,其中,所述前进后退列表包括多个前进后退表项,每个所述前进后退表项包括页面的地址信息、使用加载所用的WebView以及所述页面在所述WebView中前进后退列表中的位置。
20.如权利要求13所述的浏览器,其特征在于,所述前进后退列表维护模块还用于:
在页面开始加载的回调接口onPageStarted中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面位置的下一位;
在开始加载页面资源的回调接口onLoadResource中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置,其中,所述页面的Url为对应WebView当前页面的Url;
在页面结束加载的回调接口onPageFinished中增加新的前进后退项,并将所述页面在对应WebView本身前进后退列表里的位置设为所述WebView当前页面的位置。
21.如权利要求20所述的浏览器,其特征在于,所述前进后退列表维护模块还用于更新所述浏览器的应用层中的前进后退列表。
22.如权利要求13所述的浏览器,其特征在于,所述监控模块还用于根据所述前进后退列表获取所述前进后退列表中的当前前进后退表项以及目标前进后退表项,并对所述当前前进后退表项和目标前进后退表项进行校验。
23.如权利要求13所述的浏览器,其特征在于,还包括:
WebView池维护模块,用于创建并维护WebView池,其中,当所述WebView池中WebView的个数小于第二预设数值时,则创建至少一个WebView。
24.如权利要求13所述的浏览器,其特征在于,
对于单窗口,如果当前页面为大页面,则所述WebView池维护模块销毁该窗口对应的该WebView;
对于单窗口,如果当前页面为小页面,则所述WebView池维护模块销毁该窗口对应的该WebView;
对于多窗口,如果当前页面为大页面,则所述WebView池维护模块销毁该WebView;以及
对于多窗口,如果当前页面为小页面,则所述WebView池维护模块销毁该WebView。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310182541.6A CN103246739B (zh) | 2013-05-16 | 2013-05-16 | 多WebView的网页浏览控制方法及浏览器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310182541.6A CN103246739B (zh) | 2013-05-16 | 2013-05-16 | 多WebView的网页浏览控制方法及浏览器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246739A CN103246739A (zh) | 2013-08-14 |
CN103246739B true CN103246739B (zh) | 2017-02-08 |
Family
ID=48926259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310182541.6A Active CN103246739B (zh) | 2013-05-16 | 2013-05-16 | 多WebView的网页浏览控制方法及浏览器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103246739B (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572777B (zh) * | 2013-10-28 | 2019-05-14 | 腾讯科技(深圳)有限公司 | 基于UIWebView组件的网页加载方法及装置 |
CN103995884A (zh) * | 2014-05-29 | 2014-08-20 | 北京中电普华信息技术有限公司 | 一种混合应用页面的切换方法及系统 |
CN105224579B (zh) * | 2014-07-02 | 2019-03-26 | 腾讯科技(深圳)有限公司 | 一种历史页面导航方法和装置 |
CN105302846B (zh) * | 2014-08-01 | 2020-06-26 | 腾讯科技(北京)有限公司 | 一种恢复网页的方法及装置 |
CN104268221B (zh) * | 2014-09-25 | 2017-09-15 | 车智互联(北京)科技有限公司 | 基于Ios系统WebView的翻页方法和翻页系统 |
CN105630461A (zh) * | 2014-10-27 | 2016-06-01 | 航天信息股份有限公司 | 一种android应用界面的管理方法 |
US10154041B2 (en) | 2015-01-13 | 2018-12-11 | Microsoft Technology Licensing, Llc | Website access control |
CN104991710A (zh) * | 2015-06-29 | 2015-10-21 | 北京金山安全软件有限公司 | 一种网页视图控制方法及装置 |
CN106354355A (zh) * | 2015-07-13 | 2017-01-25 | 华为软件技术有限公司 | 用户界面布局方法、装置及系统 |
CN105260424B (zh) * | 2015-09-28 | 2019-02-26 | 北京奇虎科技有限公司 | 用户浏览网页历史记录和最常访问的处理方法及装置 |
CN105160027B (zh) * | 2015-09-30 | 2019-03-12 | 百度在线网络技术(北京)有限公司 | 广告数据处理方法及装置 |
CN105653586A (zh) * | 2015-12-21 | 2016-06-08 | 北京奇虎科技有限公司 | 一种浏览器标签内切换网页的方法及装置 |
CN105653585A (zh) * | 2015-12-21 | 2016-06-08 | 北京奇虎科技有限公司 | 一种浏览器标签内网页的切换方法及装置 |
CN105893095B (zh) * | 2016-04-13 | 2019-05-17 | 海尔优家智能科技(北京)有限公司 | 一种网页加载的方法和装置 |
CN106202244B (zh) * | 2016-06-28 | 2020-01-21 | 深圳中兴网信科技有限公司 | 网页消息返回方法和网页消息返回系统 |
CN107622063B (zh) * | 2016-07-13 | 2021-01-19 | 深圳联友科技有限公司 | 一种避免白页的页面切换方法和装置 |
CN106250434B (zh) * | 2016-07-26 | 2019-09-13 | 东软集团股份有限公司 | 加载网页的方法及装置 |
CN106357762B (zh) * | 2016-09-14 | 2019-12-24 | 百度在线网络技术(北京)有限公司 | 一种用户请求处理方法和装置 |
CN108073610B (zh) * | 2016-11-11 | 2021-03-02 | 聚好看科技股份有限公司 | 实现网页页面加载的方法及装置 |
CN108287781B (zh) * | 2017-01-10 | 2022-08-26 | 腾讯科技(深圳)有限公司 | 一种内存占用监控方法及装置、系统 |
CN108833980B (zh) * | 2018-05-24 | 2021-04-27 | 烽火通信科技股份有限公司 | 一种基于多窗口实现的iptv页面生成和重现的方法 |
CN109033131A (zh) * | 2018-06-04 | 2018-12-18 | 广州环通信息技术有限公司 | 一种快速操作页面的方法及系统 |
CN108959495B (zh) * | 2018-06-25 | 2019-12-06 | 百度在线网络技术(北京)有限公司 | H5网页的页面显示方法、装置、设备和计算机存储介质 |
CN109614180A (zh) * | 2018-11-13 | 2019-04-12 | 深圳市网心科技有限公司 | 网页打开方法、电子设备、系统及存储介质 |
CN109831701B (zh) * | 2019-01-28 | 2021-12-21 | 四川长虹电器股份有限公司 | 数字电视设备浏览器以及跨页面系统事件的扩展方法 |
CN110007983B (zh) * | 2019-03-29 | 2022-06-07 | 网易传媒科技(北京)有限公司 | 粒子喷射动画的实现方法、介质、装置和计算设备 |
CN110119490A (zh) * | 2019-04-18 | 2019-08-13 | 深圳壹账通智能科技有限公司 | 网页浏览方法、装置、计算机设备和存储介质 |
CN111159605A (zh) * | 2019-12-31 | 2020-05-15 | 杭州云缔盟科技有限公司 | 解决拦截转发Android Webview的请求后页面加载变慢的方法 |
CN113282858A (zh) * | 2020-02-20 | 2021-08-20 | 浙江宇视科技有限公司 | 页面加载方法、装置、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102169411A (zh) * | 2011-03-21 | 2011-08-31 | 广州市动景计算机科技有限公司 | 触屏终端的多窗口切换方法和装置 |
CN103019832A (zh) * | 2011-09-20 | 2013-04-03 | 百度在线网络技术(北京)有限公司 | 浏览器的切换控制方法及装置 |
CN103092835A (zh) * | 2011-10-27 | 2013-05-08 | 腾讯科技(深圳)有限公司 | 页面切换的方法及浏览器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823917B2 (en) * | 2011-10-20 | 2017-11-21 | Facebook, Inc. | Update application user interfaces on client devices |
-
2013
- 2013-05-16 CN CN201310182541.6A patent/CN103246739B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102169411A (zh) * | 2011-03-21 | 2011-08-31 | 广州市动景计算机科技有限公司 | 触屏终端的多窗口切换方法和装置 |
CN103019832A (zh) * | 2011-09-20 | 2013-04-03 | 百度在线网络技术(北京)有限公司 | 浏览器的切换控制方法及装置 |
CN103092835A (zh) * | 2011-10-27 | 2013-05-08 | 腾讯科技(深圳)有限公司 | 页面切换的方法及浏览器 |
Also Published As
Publication number | Publication date |
---|---|
CN103246739A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246739B (zh) | 多WebView的网页浏览控制方法及浏览器 | |
US11347826B2 (en) | Systems and methods for hosted applications | |
CN110020323B (zh) | 混合应用的页面切换方法、系统、计算机设备及存储介质 | |
CN109542543B (zh) | 应用程序页面处理方法、装置、存储介质和计算机设备 | |
CN105094786B (zh) | 基于JavaScript定制页面的方法及系统 | |
CN105786924B (zh) | 网页夜间模式处理方法、装置及移动终端 | |
CN111639289A (zh) | 一种网页加载方法及装置 | |
CN102043618B (zh) | 一种窗口对象显示样式的控制方法及装置 | |
CN104063415A (zh) | 显示网页自定义内容的方法及系统 | |
CN105208442A (zh) | 一种视频播放应用程序的视频播放方法及装置 | |
CN102622210B (zh) | 一种显示帮助信息的方法和装置 | |
CN103376974A (zh) | 一种窗口切换方法及装置 | |
CN110297636B (zh) | 一种基于页面配置文件的页面自动生成和参数管理方法、系统和装置 | |
CN104035753A (zh) | 一种双WebView展示定制页面的方法及系统 | |
CN103034517A (zh) | 浏览器控制工具加载方法和装置 | |
CN109522500B (zh) | 网页显示方法、装置、终端和存储介质 | |
CN112631591B (zh) | 表元素联动方法、装置、设备与计算机可读存储介质 | |
CN103488646A (zh) | 一种移动终端浏览器弱光源下浏览网页的方法及装置 | |
US20140304272A1 (en) | Electronic device and method for displaying web history thereof | |
WO2018187107A1 (en) | Cross-application content injection | |
CN102306077A (zh) | 一种在mac平台浏览器中实现视频下载的方法及浏览器 | |
CN103744845A (zh) | 一种web平台数据缓存的方法和系统 | |
CN105528389A (zh) | 一种基于手机浏览器内核的逻辑控制方法及装置 | |
TWI519980B (zh) | 網頁顯示方法和裝置及電腦可讀取儲存介質 | |
US20180121399A1 (en) | Browser Plug-In To Conserve Bandwidth |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |