具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本发明实施例提供了一种实现多个窗口同时对网络页面进行解析显示的方法,包括:
101:以链表的形式建立多个窗口。
102:接收多个窗口中任一窗口发送的网页地址URL请求,根据URL请求和窗口ID生成网络WEB页面数据请求,将WEB页面数据请求发送给相应的外部网络。
103:获取外部网络返回的WEB页面数据。
104:当返回的WEB页面数据为当前焦点窗口请求的数据时,将外部网络返回的WEB页面数据写入当前焦点窗口的相应缓存文件,并解析处理外部网络返回的WEB页面数据得到当前焦点窗口的WEB页面显示内容,刷新当前焦点窗口,将当前焦点窗口的WEB页面显示内容显示给用户。
进一步地,该方法还包括:
当返回的WEB页面数据不是当前焦点窗口请求的数据时,切换到发送该WEB页面数据请求的窗口的数据集,记录返回的WEB页面数据的接收状态,并将返回的WEB页面数据写入发送该WEB页面数据请求的窗口的相应缓存文件,然后再切换回到当前焦点窗口的数据集。
进一步地,该方法还包括:
接收切换到新焦点窗口的命令,保存当前焦点窗口的页面浏览状态;停止当前焦点窗口的预读请求,重置当前焦点窗口的预读状态及缓存区,停止当前焦点窗口的当前页面的未拉取完毕的图片的请求,清除所有图片缓存;保存当前焦点窗口的当前页面的处理状态,切换到用户选择的新焦点窗口;释放当前焦点窗口的文档对象模型DOM树所占用的内存空间,重新生成只有根节点的DOM树;
判断新焦点窗口的页面获取状态;
如果新焦点窗口的页面获取状态为正在连接或者已连接上等待接收数据,则通过连接获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户。
进一步地,该方法还包括:
如果新焦点窗口的页面获取状态不是正在连接或者已连接上等待接收数据,则打开历史浏览纪录中新焦点窗口的当前页面的缓存文件;
如果打开缓存文件失败,则发送获取新焦点窗口的当前页面的URL请求,从外部网络重新获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户。
进一步地,该方法还包括:
如果打开缓存文件成功,则按照预设的时间间隔,每次从打开的缓存文件中读取预设数量的WEB页面数据进行解析处理得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户;当将打开的缓存文件中的WEB页面数据读取并解析处理完毕后,打开新焦点窗口的当前页面的页面状态文件,获取新焦点窗口的当前页面的显示焦点并恢复。
进一步地,以链表的形式建立多个窗口具体包括:
接收建立窗口的命令,生成一个窗口节点;
对该窗口节点对应的窗口数据进行初始化,其中,窗口数据包括窗口ID、窗口对应的数据集;
将窗口节点加入链表中,完成一个窗口的建立。
本发明实施例所述的实现多个窗口同时对网络页面进行解析显示的方法,可以在单任务环境下建立多个窗口,模拟多个窗口同时运行,且可以将获取的WEB页面数据进行缓存,使得再次打开前面的网络页面时,不需要重新获取全部的WEB页面数据,可以节约流量,快速打开历史浏览页面。当接收到切换窗口的命令时,可以从当前焦点窗口切换到新焦点窗口,支持窗口间的快速切换。
本发明实施例所述的实现多个窗口同时对网络页面进行解析显示的方法可以应用于在单任务环境下运行的浏览器,及其他类似的地方。为了便于理解,下面以应用于在单任务环境下运行的浏览器为例进行进一步说明。
实施例2
参见图2,本发明实施例提供了一种实现多个窗口同时对网络页面进行解析显示的方法,包括:
201:浏览器以链表的形式建立多个窗口。
具体地,建立窗口的过程如下:1)浏览器接收建立窗口的命令,生成一个窗口节点。
2)浏览器对该窗口节点对应的窗口数据进行初始化,其中,窗口数据包括窗口ID(Identification,标识)、窗口对应的数据集。
对窗口节点对应的窗口数据进行初始化主要包括:为该建立的窗口分配一个唯一的窗口ID,用于在接收到外部网络返回的WEB页面数据时区分具体是哪个当窗口所请求的数据。创建窗口对应的数据集,其中每个窗口对应一个独立的数据集,窗口对应的数据集主要包括页面数据拉取状态(AppNetState)、前进后退历史状态(TTravelList)、数据解压缩状态(Decompressor)、页面类型、WEB页面缓存信息等。
3)浏览器将窗口节点加入链表中,完成一个窗口的建立。
浏览器按照上述1)、2)、3)步骤重复进行从而可以建立多个窗口,多个窗口节点以链表的形式保存。并且,具体地可以根据无线移动终端的内存等情况,设置最多可以建立多少个窗口,如当无线移动终端的内存较小时,可以设置最多建立3个窗口,当无线移动终端的内存较大时,可以设置最多建立8个窗口等,可以根据实际应该情况进行灵活设置,对最多可以建立多少个窗口不进行具体限定。
202:浏览器接收多个窗口中任一窗口发送的URL请求,根据URL请求和窗口ID生成WEB页面数据请求,将WEB页面数据请求发送给相应的外部网络。
具体地,浏览器接收多个窗口中任一窗口发送的URL请求,将URL请求封装为HTTP(HyperText Transfer Protocol,超文本传输协议)请求(Request),将HTTP请求和窗口ID封装成WEB页面数据请求,将WEB页面数据请求发送给相应的外部网络。其中,相应的外部网络是指可以提供与WEB页面数据请求相应的WEB页面数据的网络。
实际应用中当用户开启多个窗口进行网络页面浏览时,先后在不同的窗口点击连接发起URL请求,从而使得浏览器可以接收到每个窗口发送的URL请求。并且,实际应用中一个WEB页面数据请求可以作为一个请求任务(Task),可以将一个个WEB页面数据请求作为一个个请求任务加入请求发送队列中,通过队列的方式发送给相应的外部网络。
203:浏览器获取外部网络返回的WEB页面数据,判断返回的WEB页面数据是否为当前焦点窗口请求的数据,如果是,则执行204;否则,执行205。
具体地,当外部网络接收到WEB页面数据请求后,返回与WEB页面数据请求相应的WEB页面数据。浏览器获取到外部网络返回的WEB页面数据后,根据WEB页面数据请求中的窗口ID号识别返回的WEB页面数据为哪个窗口所请求的数据,从而得到是否为当前焦点窗口请求的数据。
其中,当前焦点窗口是指用户正在浏览并且对窗口内容可操作的窗口。
204:浏览器将外部网络返回的WEB页面数据写入当前焦点窗口的相应缓存文件,并解析处理外部网络返回的WEB页面数据得到当前焦点窗口的WEB页面显示内容,刷新当前焦点窗口,将当前焦点窗口的WEB页面显示内容显示给用户,然后结束。
如果返回的WEB页面数据为当前焦点窗口请求的数据,则可以对WEB页面数据直接进行解析处理,将外部网络返回的WEB页面数据写入当前焦点窗口的相应缓存文件,刷新当前焦点窗口,将当前焦点窗口的WEB页面显示内容显示给用户。其中,对WEB页面数据进行解析处理包括:更新DOM(DocumentObject Model,文档对象模型)树、Render树、排版等,具体与现有技术相同,此处不再赘述。
205:浏览器切换到发送该WEB页面数据请求的窗口的数据集,记录返回的WEB页面数据的接收状态,并将返回的WEB页面数据写入发送该WEB页面数据请求的窗口的相应缓存文件,然后再切换回到当前焦点窗口的数据集,然后结束。
其中,浏览器切换到发送该WEB页面数据请求的窗口的数据集等只是浏览器在后台进行的操作,浏览器当前显示的仍是当前焦点窗口的内容,该步骤不会影响浏览器当前的显示内容。
当用户开启多个窗口进行网络页面浏览时,本发明实施例所述的方法还支持不同窗口间的快速切换,进一步地,参见图3,该方法还包括:
301:浏览器接收切换到新焦点窗口的命令,保存当前焦点窗口的页面浏览状态;停止当前焦点窗口的预读请求,重置当前焦点窗口的预读状态及缓存区,停止当前焦点窗口的当前页面的未拉取完毕的图片的请求,清除所有图片缓存;保存当前焦点窗口的当前页面的处理状态,切换到用户选择的新焦点窗口;释放当前焦点窗口的DOM树所占用的内存空间,重新生成只有根节点的DOM树。
具体地,用户通过按键、或者触摸笔、或者手指等触发操作命令,浏览器接收到操作命令后,判断该操作命令是否是切换到新焦点窗口的命令,如果是,则执行301,否则,按照相应的方法处理其他的命令。
其中,保存当前焦点窗口的当前页面浏览状态具体为:记录当前焦点窗口的当前页面的显示区域以及焦点位置等。
对于内存比较小的无线移动终端,通常浏览器的可用内存只能保存一个窗口的页面及图片数据,所以在切换窗口时候需要释放前一个焦点窗口所占用的内存。
其中,释放当前焦点窗口的DOM树所占用的内存空间,是为了保证有足够的内存加载新页面,而释放后重新生成只有根节点的DOM树,是为了可以保证新焦点窗口的页面还未获取到数据前可以显示空白页面,而不是显示原有页面。
302:浏览器判断新焦点窗口的页面获取状态,如果新焦点窗口的页面获取状态为正在连接(NET_STATE_CONNECT)或者已连接上等待接收数据(NET_STATE_REQUESTDATA),则执行306;否则,执行303。
如果新焦点窗口的页面获取状态为正在连接或者已连接上等待接收数据,则表明浏览器将要获取新焦点窗口的当前页面的WEB页面数据,则执行步骤306。
303:浏览器打开历史浏览纪录中新焦点窗口的当前页面的缓存文件,如果打开缓存文件失败,则执行304;如果打开缓存文件成功,则执行305。
如果打开缓存文件失败,则证明缓存文件不存在,需要执行304。如果打开缓存文件成功,则证明缓存文件存在,可以执行305。
304:浏览器发送获取新焦点窗口的当前页面的URL请求,从外部网络重新获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户,然后结束。
其中,从外部网络获取新焦点窗口的当前页面的WEB页面数据的具体过程与步骤202-205类似,此处不再赘述。
305:浏览器按照预设的时间间隔,每次从打开的缓存文件中读取预设数量的WEB页面数据进行解析处理得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户;当将打开的缓存文件中的WEB页面数据读取并解析处理完毕后,打开新焦点窗口的当前页面的页面状态文件,获取新焦点窗口的当前页面的显示焦点并恢复,然后结束。
不一次读取完打开的缓存文件中的数据的目的是,避免在读取一些较大页面的缓存文件中的数据时解析处理会花费大量时间,造成窗口切换不流畅,降低用户体验。
其中,预设的时间间隔的大小可以根据实际应用状况进行设置,对此不做限定,并且具体可以通过定时器的方式实现时间间隔。预设数量的数据的大小也可以根据实际应用状况进行设置,对此不做限定,如预设数量的数据可以是5-8K数据。
306:浏览器通过连接获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户,然后结束。
本发明实施例所述的实现多个窗口同时对网络页面进行解析显示的方法,可以在单任务环境下建立多个窗口,模拟多个窗口同时运行,且可以将获取的WEB页面数据进行缓存,使得再次打开前面的网络页面时,不需要重新获取全部的WEB页面数据,可以节约流量,快速打开历史浏览页面。当接收到切换窗口的命令时,可以从当前焦点窗口切换到新的焦点窗口,支持窗口间的快速切换。
实施例3
参见图4,本发明实施例提供了一种实现多个窗口同时对网络页面进行解析显示的装置,该装置包括:
窗口建立模块401,用于以链表的形式建立多个窗口;
WEB页面数据请求生成模块402,用于接收窗口建立模块401建立的多个窗口中任一窗口发送的网页地址URL请求,根据URL请求和窗口ID生成网络WEB页面数据请求,将WEB页面数据请求发送给相应的外部网络;
WEB页面数据获取模块403,用于在WEB页面数据请求生成模块402将WEB页面数据请求发送给相应的外部网络后,获取外部网络返回的WEB页面数据;
第一WEB页面解析显示模块404,用于当WEB页面数据获取模块403获取的外部网络返回的WEB页面数据为当前焦点窗口请求的数据时,将外部网络返回的WEB页面数据写入当前焦点窗口的相应缓存文件,并解析处理外部网络返回的WEB页面数据得到当前焦点窗口的WEB页面显示内容,刷新当前焦点窗口,将当前焦点窗口的WEB页面显示内容显示给用户。
进一步地,参见图5,该装置还包括:
WEB页面数据处理模405,用于当WEB页面数据获取模块403获取的外部网络返回的WEB页面数据不是当前焦点窗口请求的数据时,切换到发送WEB页面数据请求的窗口的数据集,记录返回的WEB页面数据的接收状态,并将返回的WEB页面数据写入发送WEB页面数据请求的窗口的相应缓存文件,然后再切换回到当前焦点窗口的数据集。
进一步地,参见图6,该装置还包括:
新焦点窗口切换模块406,用于接收切换到新焦点窗口的命令,保存当前焦点窗口的页面浏览状态;停止当前焦点窗口的预读请求,重置当前焦点窗口的预读状态及缓存区,停止当前焦点窗口的当前页面的未拉取完毕的图片的请求,清除所有图片缓存;保存当前焦点窗口的当前页面的处理状态,切换到用户选择的所述新焦点窗口;释放当前焦点窗口的文档对象模型DOM树所占用的内存空间,重新生成只有根节点的DOM树;
判断模块407,用于在新焦点窗口切换模块406重新生成只有根节点的DOM树后,判断新焦点窗口的页面获取状态;
第二WEB页面解析显示模块408,用于当判断模块407的判断结果是新焦点窗口的页面获取状态为正在连接或者已连接上等待接收数据时,通过连接获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户。
进一步地,参见图7,该装置还包括:
打开模块409,用于当判断模块407的判断结果是新焦点窗口的页面获取状态不是正在连接或者已连接上等待接收数据时,打开历史浏览纪录中新焦点窗口的当前页面的缓存文件;
第三WEB页面解析显示模块410,用于当打开模块409打开缓存文件失败时,发送获取新焦点窗口的当前页面的URL请求,从外部网络重新获取新焦点窗口的当前页面的WEB页面数据,解析处理获取的新焦点窗口的当前页面的WEB页面数据得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户。
进一步地,参见图8,该装置还包括:
第四WEB页面解析显示模块411,用于当打开模块409打开缓存文件成功时,按照预设的时间间隔,每次从打开的缓存文件中读取预设数量的WEB页面数据进行解析处理得到新焦点窗口的WEB页面显示内容,刷新新焦点窗口,将新焦点窗口的WEB页面显示内容显示给用户;当将打开的缓存文件中的WEB页面数据读取并解析处理完毕后,打开新焦点窗口的当前页面的页面状态文件,获取新焦点窗口的当前页面的显示焦点并恢复。
进一步地,窗口建立模块401具体包括:
窗口节点生产单元,用于接收建立窗口的命令,生成一个窗口节点;
窗口数据初始化单元,用于在所述窗口节点生产单元生成一个窗口节点后,对所述窗口节点对应的窗口数据进行初始化,其中,所述窗口数据包括窗口ID、窗口对应的数据集;
窗口建立单元,用于在所述窗口数据初始化单元对所述窗口节点对应的窗口数据进行初始化后,将所述窗口节点加入链表中,完成一个窗口的建立。
本发明实施例所述的实现多个窗口同时对网络页面进行解析显示的装置,可以在单任务环境下建立多个窗口,模拟多个窗口同时运行,且可以将获取的WEB页面数据进行缓存,使得再次打开前面的网络页面时,不需要重新获取全部的WEB页面数据,可以节约流量,快速打开历史浏览页面。当接收到切换窗口的命令时,可以从当前焦点窗口切换到新的焦点窗口,支持窗口间的快速切换。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。