发明内容
基于此,有必要提供一种多标签页浏览器防假死的方法和系统,用于解决主框架窗口和标签页分离的问题。
一种多标签页浏览器防假死的方法,包括以下步骤:
将浏览器窗口创建成分层窗口,所述分层窗口包括渲染窗口和交互窗口,并将所述渲染窗口设置为透明窗口;
为所述渲染窗口和所述交互窗口分别设置单独的进程;
通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息,并将所获取的渲染信息发送给所述交互窗口,将所获取的交互行为信息发送给所述渲染窗口;
在所述交互窗口显示所述渲染信息对应的网页渲染效果,在所述渲染窗口模拟所述交互行为信息对应的用户交互行为。
在其中一个实施例中,在所述通过消息钩子获取所述渲染窗口的渲染数据和所述交互窗口的交互行为信息,并将所获取的渲染信息发送给所述交互窗口,将所获取的交互行为信息发送给所述渲染窗口步骤之前,还包括:
判断所述消息钩子是否启动,若是,则执行所述通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息的步骤,否则,启动消息钩子。
在其中一个实施例中,在所述将浏览器窗口创建成分层窗口,所述分层窗口包括渲染窗口和交互窗口,并将所述渲染窗口设置为透明窗口步骤之前,还包括:为浏览器的各个标签页分别设置单独的进程。
在其中一个实施例中,所述交互行为信息包括鼠标位置、鼠标按键操作和键盘按键操作。
一种多标签页浏览器防假死的系统,包括分层窗口创建模块、交互渲染进程设置模块、信息获取模块和信息处理模块;其中:
所述分层窗口创建模块,被配置以将浏览器窗口创建成分层窗口,所述分层窗口包括渲染窗口和交互窗口,并将所述渲染窗口设置为透明窗口;
所述交互渲染进程设置模块,被配置以为所述渲染窗口和所述交互窗口分别设置单独的进程;
所述信息获取模块,被配置以通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息,并将所获取的渲染信息发送给所述交互窗口,将所获取的交互行为信息发送给所述渲染窗口;
所述信息处理模块,被配置以在所述交互窗口显示所述渲染信息对应的网页渲染效果,在所述渲染窗口模拟所述交互行为信息对应的用户交互行为。
在其中一个实施例中,所述多标签页浏览器防假死的系统还包括判断模块,所述判断模块被配置以判断所述消息钩子是否启动,若是,则通知所述信息获取模块消息钩子已启动,否则,启动消息钩子。
在其中一个实施例中,所述多标签页浏览器防假死的系统还包括标签页进程设置模块,所述标签页进程设置模块,被配置以为浏览器的各个标签页设置单独的进程。
在其中一个实施例中,所述交互行为信息包括鼠标位置、鼠标按键操作和键盘按键操作。
上述多标签页浏览器防假死的方法和系统,将浏览器窗口创建成交互窗口和透明的渲染窗口,然后通过将消息钩子注入到浏览器控件的进程中,将所述渲染窗口的渲染信息发送到所述交互窗口进行显示,并将所述交互窗口的交互行为信息发送到渲染窗口以模拟用户交互行为,从而使得在所述渲染窗口无法及时响应用户的交互行为信息时,所述交互窗口依然可以将所述渲染窗口在停止响应前的最后一张图片进行显示,不会造成浏览器主框架窗口和各个标签页分离的情况。而且所述浏览器下的各个标签页均设置有单独的进程,因此一个标签页假死,并不会影响到其他标签页。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明多标签页浏览器防假死的方法和系统的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不被配置以限定本发明。
参见图1,一个实施例中,本发明多标签页浏览器防假死的方法包括以下步骤:
S100,将浏览器窗口创建成分层窗口,所述分层窗口包括渲染窗口和交互窗口,并将所述渲染窗口设置为透明窗口。
其中,可以采用微软的分层窗口技术将浏览器窗口创建成渲染窗口和交互窗口的形式,并将所述渲染窗口设置为透明窗口。所述分层窗口可以位于所述交互窗口的上层,且所述分层窗口与所述交互窗口的大小可以相同。由于微软的分层窗口技术为已知技术,故在此不再赘述。
在步骤S100之前,所述多标签页浏览器防假死的方法还包括:为浏览器的各个标签页分别设置单独的进程。
其中,在单进程环境中,所述为浏览器的各个标签页分别设置单独的进程的步骤是必须有的;但在多进程环境中,所述为浏览器的各个标签页分别设置单独的进程的步骤是可以省略的。所述单进程环境为浏览器的各个标签页均位于同一个进程中。所述多进程环境为浏览器的各个标签页分别设置有单独的进程。
可以理解的,为浏览器的各个标签页设置单独的进程,可以分离各个标签页的消息循环。从而其中一个标签页的消息循环阻塞时,则不会影响其他标签页的消息循环。
S200,为所述渲染窗口和所述交互窗口分别设置单独的进程。
其中,为了使浏览器的交互和渲染不互相干扰,可以将浏览器的交互和渲染分别设置单独的进程。本实施例中,所述渲染窗口和所述交互窗口设置在两个不同的进程中。即,所述渲染窗口负责浏览器的网页渲染工作,所述交互窗口负责浏览器的用户交互行为工作。
S300,通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息,并将所获取的渲染信息发送给所述交互窗口,将所获取的交互行为信息发送给所述渲染窗口。
其中,可以将消息钩子注入到浏览器控件的进程中,来获取渲染窗口的渲染信息和交互窗口的交互行为信息。所述交互行为信息可以包括鼠标位置、鼠标按键操作和键盘按键操作。所述交互行为信息是用户通过鼠标和/或键盘对浏览器进行的操作信息。当然,所述交互行为信息也可以只包括鼠标位置和鼠标按键操作。若所述交互行为信息不包括键盘按键操作时,默认用户未通过键盘对浏览器进行输入操作。
所述渲染信息可以包括绘制图片等信息。打开浏览器后,若用户还未对浏览器进行操作,则钩子消息获取默认的浏览器初始渲染信息。
然后,将从所述渲染窗口的渲染进程中获取到的渲染信息发送到所述交互窗口,并将从所述交互窗口的交互进程中获取到的交互信息发送到所述渲染窗口。
优选的,在步骤S300之前,本发明多标签页浏览器防假死的方法还包括:判断所述消息钩子是否启动,若是,则执行所述通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息的步骤,否则,启动消息钩子。
其中,被消息钩子注入的浏览器可以有多个从属的标签页,而多个标签页可以使用一个消息钩子,即可获取每个标签页对应的渲染窗口的渲染信息和交互窗口的交互行为信息。对于第一个被打开的标签页,判断到消息钩子还未启动后,则启动所述消息钩子,并执行步骤S300。而对于后续被打开的标签页,判断到消息钩子已经启动,则执行步骤S300。
S400,在所述交互窗口显示所述渲染信息对应的网页渲染效果,在所述渲染窗口模拟所述交互行为信息对应的用户交互行为。
其中,所述交互窗口接收到所述渲染信息后,浏览器的信息处理模块将所述渲染信息对应的网页渲染效果在所述交互窗口中进行显示。同样,所述渲染窗口接收到所述交互行为信息后,浏览器的信息处理模块在所述渲染窗口中模拟所述交互行为信息对应的用户交互行为。
上述多标签页浏览器防假死的方法,将浏览器窗口创建成交互窗口和透明的渲染窗口,然后通过将消息钩子注入到浏览器控件的进程中,将所述渲染窗口的渲染信息发送到所述交互窗口进行显示,并将所述交互窗口的交互行为信息发送到渲染窗口模拟用户交互行为,从而使得在所述渲染窗口无法及时响应用户的交互行为信息时,所述交互窗口依然将所述渲染窗口在停止响应前的最后一张图片进行显示,不会造成浏览器主框架窗口和各个标签页分离的情况。而且所述浏览器下的各个标签页均设置有单独的进程,因此浏览器下的一个标签页假死,并不会影响到浏览器下的其他标签页。
基于同一发明构思,本发明实施例提供一种多标签页浏览器防假死的系统,由于此系统解决问题的原理与前述一种多标签页浏览器防假死的方法相似,因此,该系统的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
参见图2,本发明多标签页浏览器防假死的系统包括分层窗口创建模块100、交互渲染进程设置模块200、信息获取模块300和信息处理模块400。
分层窗口创建模块100,被配置以将浏览器窗口创建成分层窗口,所述分层窗口包括渲染窗口和交互窗口,并将所述渲染窗口设置为透明窗口。
其中,可以采用微软的分层窗口技术将浏览器窗口创建成渲染窗口和交互窗口的形式,并将所述渲染窗口设置为透明窗口。所述分层窗口可以位于所述交互窗口的上层,且所述分层窗口与所述交互窗口的大小相同。由于微软的分层窗口技术为已知技术,故在此不再赘述。
可以理解的,所述渲染窗口可以设置为前景窗口。所述交互窗口可以设置为背景窗口,且所述渲染窗口和所述交互窗口大小一致并相互重叠。
另外,本发明多标签页浏览器防假死的系统还包括标签页进程设置模块500。标签页进程设置模块500被配置以为浏览器的各个标签页设置单独的进程。
其中,在单进程环境中,标签页进程设置模块500为浏览器的各个标签页分别设置单独的进程是必须有的;但在多进程环境中,标签页进程设置模块500为浏览器的各个标签页分别设置单独的进程则可以省略的。所述单进程环境为浏览器的各个标签页均位于同一个进程中。所述多进程环境为浏览器的各个标签页分别设置有单独的进程。
可以理解的,为浏览器的各个标签页设置单独的进程,可以分离各个标签页的消息循环。从而其中一个标签页的消息循环阻塞时,则不会影响其他标签页的消息循环。
交互渲染进程设置模块200,被配置以为所述渲染窗口和所述交互窗口分别设置单独的进程。
其中,为了使浏览器的交互和渲染不互相干扰,可以将浏览器的交互和渲染分别设置单独的进程。本实施例中,所述渲染窗口和所述交互窗口设置在两个不同的进程中。即,所述渲染窗口负责浏览器的网页渲染工作,所述交互窗口负责浏览器的用户交互行为工作。
信息获取模块300,被配置以通过消息钩子获取所述渲染窗口的渲染信息和所述交互窗口的交互行为信息,并将所获取的渲染信息发送给所述交互窗口,将所获取的交互行为信息发送给所述渲染窗口。
其中,可以将消息钩子注入到浏览器控件的进程中,来获取渲染窗口的渲染信息和交互窗口的交互行为信息。所述交互行为信息可以包括鼠标位置、鼠标按键操作和键盘按键操作。所述交互行为信息是用户通过鼠标和/或键盘对浏览器进行的操作信息。当然,所述交互行为信息也可以只包括鼠标位置和鼠标按键操作。若所述交互行为信息不包括键盘按键操作时,默认用户未通过键盘对浏览器进行输入操作。
所述渲染信息可以包括绘制图片等信息。打开浏览器后,若用户还未对浏览器进行操作,则钩子消息获取默认的浏览器初始渲染信息。
然后,将从所述渲染窗口的渲染进程中获取到的渲染信息发送到所述交互窗口,并将从所述交互窗口的交互进程中获取到的交互信息发送到所述渲染窗口。
另外,本发明多标签页浏览器防假死的系统还包括判断模块600。判断模块600被配置以判断所述消息钩子是否启动,若是,则通知信息获取模块300消息钩子已启动,否则,启动消息钩子。
其中,被消息钩子注入的浏览器可以有多个从属的标签页,而多个标签页可以使用一个消息钩子,即可获取每个标签页对应的渲染窗口的渲染信息和交互窗口的交互行为信息。对于第一个被打开的标签页,判断模块600判断到消息钩子还未启动后,则启动消息钩子。而对于后续被打开的标签页,判断模块600判断到消息钩子已启动,则通知信息获取模块300消息钩子已启动。
信息处理模块400,被配置以在所述交互窗口显示所述渲染信息对应的网页渲染效果,在所述渲染窗口模拟所述交互行为信息对应的用户交互行为。
其中,所述交互窗口接收到所述渲染信息后,信息处理模块400将所述渲染信息对应的网页渲染效果在所述交互窗口中进行显示。同样,所述渲染窗口接收到所述交互行为信息后,信息处理模块400在所述渲染窗口中模拟所述交互行为信息对应的用户交互行为。
上述多标签页浏览器防假死的系统,将浏览器窗口创建成交互窗口和透明的渲染窗口,然后通过将消息钩子注入到浏览器控件的进程中,将所述渲染窗口的渲染信息发送到所述交互窗口进行显示,并将所述交互窗口的交互行为信息发送到渲染窗口模拟用户交互行为,从而使得在所述渲染窗口无法及时响应用户的交互行为信息时,所述交互窗口依然将所述渲染窗口在停止响应前的最后一张图片进行显示,不会造成浏览器主框架窗口和各个标签页分离的情况。而且所述浏览器下的各个标签页均设置有单独的进程,因此浏览器下的一个标签页假死,并不会影响到浏览器下的其他标签页。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。