一种多页面浏览器防假死方法及装置的制作方法

文档序号:6578997阅读:103来源:国知局
专利名称:一种多页面浏览器防假死方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种多页面浏览器防假死方法及装置。
背景技术
随着互联网的蓬勃发展,浏览器也得到了很大的发展,从开始的单页面 浏览器,逐步过渡到现在的多页面浏览器。现在的浏览器绝大部分都是多页 面浏览器。多页面浏览器也就是能在一个窗口同时打开多个页面,其优点是 多个页面切换更方便,资源占用更少,浏览体验更好。
但是,多页面浏览器至少存在如下缺点由于一个多页面浏览器是一个 整体,如果一个页面假死(所述假死是浏览器的一个出问题的状态,表现为 界面不刷新,点击任何按钮没有响应,无法进行任何操作的一种状态),那 么整个浏览器都会假死,使整个浏览器点击任何按键都不能操作,如果想要 打开新的窗口,只能重新启动浏览器,这样在用户体检上给用户带来了很大 的不便。
现有技术针对Chrome浏览器提供一种防假死解决方案,Chrome浏览器使 用的是无窗口的一种页面渲染方式,页面根本就没有窗口,也不会导致假 死。因此,需要一种多页面浏览器的防假死技术。

发明内容
本发明实施例提供一种多页面浏览器防假死方法及装置,有效防止一个 页面假死导致整个浏览器假死的问题。本发明实施例是通过以下技术方案实现的 本发明实施例提供一种多页面浏览器防假死方法,包括 将页面窗口作为顶层窗口 ,并去掉页面窗口与主框架窗口之间的父子关 系,使页面窗口与主框架窗口平级;
去掉父子关系的页面窗口与主框架窗口之间通过异步方式通信。 还包括
在所述去掉父子关系的页面窗口与主框架窗口之间模拟父子关系的表现。
所述模拟父子关系的表现包括
若主框架窗口移动、改变大小、显示或隐藏,则页面窗口也相应的移 动、改变大小、显示或隐藏。 所述方法还包括
在单线程环境中,为每个页面窗口设置单独的线程。
本发明实施例提供一种多页面浏览器防假死装置,包括
第一设置单元,用于将页面窗口设置为顶层窗口,并去掉页面窗口与主
框架窗口之间的父子关系,使页面窗口与主框架窗口平级;
通信单元,用于在去掉父子关系的页面窗口与主框架窗口之间通过异步
方式通信。 还包括
模拟单元,用于在所述去掉父子关系的页面窗口与主框架窗口之间模拟 父子关系的表现。
在单线程环境中,所述装置还包括
第二设置单元,用于为每个页面窗口设置单独的线程。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过去掉 主框架窗口与页面窗口之间的父子关系,并在主框架窗口与页面窗口之间采用异步方式通信,使主框架窗口发出一个消息后立即返回,不等待页面窗口 的处理,即使页面窗口不能响应,对主框架窗口也没有任何影响,从而避免 了 一个页面窗口假死导致整个浏览器假死的问题,有效增强了用户体验。


图1为本发明实施例Windows系统下,父子窗口关系示意图; 图2为本发明实施例多页面浏览器防假死方法示意图; 图3为本发明实施例单线程设置成多线程后的消息循环示意图; 图4为本发明实施例多页面浏览器》文假死装置结构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实 施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护 的范围。
首先分析多页面浏览器产生假死的原因
在Windows系统下,所有的有窗口 (所述有窗口,即有可显示^^用户且可 操作的窗口)的程序都是消息驱动的,也就是用户操作鼠标和键盘会产生各 种消息,这些消息会分发到当前系统有焦点的窗口 (一个系统中同一时刻仅 有一个窗口有焦点,通常看见的焦点,比如编辑框里面闪烁的光标),当前 有焦点的窗口收到消息以后,会根据消息的不同类型做出不同的响应。比如 鼠标按下,鼠标双击,键盘按键等都会产生消息。根据这些消息,使应用程 序不断的做出响应,刷新界面,完成操作。
系统内部消息处理方式为系统会把消息不断的放到消息队列里面,每个有窗口的执行线程都有一个消息循环,这个消息循环不断的从消息队列里 面获取消息,处理消息。但是如果处理消息的部分发生了阻塞, 一直没有运 行完成,那么这个消息循环就不能获取新的消息,这时再对这个页面进行操 作就会不响应了。出现这种情况,页面不会刷新,因为必须要收到刷新的消 息才会刷新界面,按一个按钮也没有响应,于是这个消息循环就阻塞在消息 处理这里,不响应任何操作了,也就是出现假死。
Windows系统中每一个线程有一个消息循环,但在单线程环境下,多个页 面共用一个消息循环, 一个消息循环的阻塞会导致整个程序的阻塞。基于该 分析,本发明实施例为每个页面窗口设置一个单独的线程。也就是构造出多 线程环境。
但在多线程环境下还存在另外一个问题在Windows系统下,窗口之间是 有关系的。如图l中所示,图l中有一个顶层窗口,顶层窗口就是在任务栏上 有一个项,并且有最小化,最大化和关闭按钮的一个窗口。而这个顶层窗口 里面的一个按钮也是一个窗口,即图中的按钮窗口,顶层窗口与按钮窗口之 间为父子关系,称为父子窗口。父子窗口之间的联系为当父窗口移动的时 候,子窗口也必须要移动。当父窗口隐藏的时候,子窗口也必须隐藏,父窗 口显示的时候,子窗口也必须要一起显示。在多线程多页面浏览器的环境 下,主框架窗口为顶层窗口 (父窗口),和页面窗口 (子窗口)之间就是父 子窗口的关系。每个页面窗口各在一个线程,主框架窗口在一个线程。主框 架窗口所在线程就是地址栏,工具栏等所在的线程,页面窗口所在线程就是 页面窗口所在的线程。在多线程的情况下,父窗口的某些操作是通过发消息 来和子窗口同步的,比如移动,当父窗口移动的时候,向子窗口发一个消 息,然后子窗口也移动。这里有一个问题,如果子窗口所在的线程阻塞了, 不响应消息了,那么父窗口会一直等待这个消息的返回,于是父窗口也阻塞 了,导致父窗口所在的线程也阻塞了,于是整个程序就不响应了。因此,在多线程的情况下,如果一个页面窗口出现了假死,则操作主框架窗口的时 候,主框架窗口需要发消息与页面窗口同步,但页面窗口不响应消息,于是 主框架窗口就等待页面窗口,导致整个浏览器不响应出现假死。基于对多线 程环境的分析,本发明实施例通过去掉页面窗口与主框架窗口之间的父子关 系,并在页面窗口与主框架窗口间通过异步方式通信来解决该问题。
通过上面的分析本发明实施例提供一种多页面浏览器防假死方法,如图2
所示,该方法包4舌
步骤20:为每个页面窗口设置单独的线程;
在单线程环境中,该步骤是必须的,而在多线程环境下,该步骤是可以 省略的。
所述为每个页面窗口设置单独的线程,即将每个页面窗口都力文在一个独 立的线程里面。
在单线程环境中,如图3中所示,把每个页面窗口都放在一个独立的线程 里面,这样每个页面窗口就有了一个消息循环,当某一个线程的消息循环发 生阻塞的时候,不会影响到其它线程的消息循环。也就是说,当一个页面窗 口假死的时候,其它页面窗口不会受到影响。
可选地,为每个页面窗口单独i殳置一个进程,从而可以进一步防止崩溃 的发生。
步骤21:将页面窗口作为顶层窗口,并去掉页面窗口与主框架窗口之间 的父子关系,使页面窗口与主框架窗口平级;
所述将页面窗口作为顶层窗口的方法包括在每个页面窗口的任务栏上 设置一个包括最小化,最大化和关闭按钮的一个项。
所述使页面窗口与主框架窗口平级,即令页面窗口和主框架窗口均为顶 层窗口,不存在父子关系。每个窗口对应唯——个ID,系统内部才莫块记录该 ID以及记录该ID对应的窗口是页面窗口还是主框架窗口 ,这样即使将页面窗口与主框架窗口设置为平级,系统内部也能区分哪个窗口是页面窗口 ,哪个 窗口是主框架窗口。
将页面窗口作为顶层窗口后,若页面窗口不响应主框架窗口,则用户可 以选择切换到别的页面窗口或关闭该页面窗口 。
步骤22:去掉父子关系的页面窗口与主框架窗口之间通过异步方式通
所述异步方式通信,即主框架窗口发出一个消息给页面窗口以后立即返 回,不用等待消息的处理完成。
由于现有技术中父窗口(主框架窗口)采用发送同步消息方式与子窗口 (页面窗口)同步的,比如移动,当父窗口移动的时候,向子窗口发一个消 息,然后子窗口也移动,这时如果子窗口所在的线程阻塞了 ,不响应消息 了,那么父窗口会一直等待这个消息的返回,于是父窗口也阻塞了,导致父 窗口所在的线程也阻塞了,于是整个程序就不响应了。而本发明实施例中由 于在页面窗口与主框架窗口之间通过异步方式通信,主框架窗口发出 一个消 息给页面窗口以后立即返回,不用等待消息的处理完成,这样即使页面窗口 不响应消息,主框架窗口还是可以继续处理自己的消息,这样就避免了主框 架窗口因为页面窗口的不响应而导致自己也不响应的问题,可以将布I死限制 在一个页面窗口。
另外,在所述去掉父子关系的页面窗口与主框架窗口之间模拟父子关系 的表现。所述模拟父子关系的表现包括若主框架窗口移动、改变大小、显 示或隐藏,则页面窗口也相应的移动、改变大小、显示或隐藏。若页面窗口 不响应主框架窗口 ,则用户可以根据需要单独对该不响应的页面窗口选择切 换到别的页面或关闭该页面窗口 。所述模拟操作可以只限于显示给用户的页 面窗口与主框架窗口之间,例如,若主框架窗口移动,则用户手动才莫拟主框 架窗口与页面窗口之间原父子关系的表现,即用户手动移动显示给用户的页面窗口。
本发明实施例把每个页面都放在一个独立的线程里面, 一个页面假死,其 它页面不会受到影响,且去掉主框架窗口与页面窗口之间的父子关系,并在 主框架窗口与页面窗口间采用异步方式通信,则在主框架窗口 (父窗口)发 出一个消息后立即返回,不等待页面窗口 (子窗口)的处理,这样如果页面 窗口不能响应,则对主框架窗口也没有任何影响,这样一个页面窗口的作支死 不会影响主框架窗口的操作,可以把假死限制在一个页面窗口的范围之内, 有效防止一个页面窗口 ,I死导致整个浏览器,支死的问题。
本发明实施例还提供一种多页面浏览器防假死装置,如图4所示,该装置
包括
第一设置单元40,用于将页面窗口设置为顶层窗口,并去掉页面窗口与 主框架窗口之间的父子关系,使页面窗口与主框架窗口平级;
通信单元41 ,用于在去掉父子关系的页面窗口与主框架窗口之间通过异 步方式通信。
所述装置还包括
模拟单元42,用于在所述去掉父子关系的页面窗口与主框架窗口之间模 拟父子关系的表现。所述模拟父子关系的表现包括若主框架窗口移动、改 变大小、显示或隐藏,则页面窗口也相应的移动、改变大小、显示或隐藏。
在单线程环境中,所述装置还包括
第二设置单元43,用于为每个页面窗口设置单独的线程,也就是将每个 页面都放在一个独立的线程里面。
本发明实施例所述装置可以设置于浏览器管理系统已有的装置内,也可 以为新增的装置。本发明实施例所述多页面浏览器防假死方法及装置适用于 任何浏览器内核,例如IE内核。
本发明实施例去掉主框架窗口与页面窗口之间的父子关系,并在主框架窗口与页面窗口之间采用异步方式通信,则在主框架窗口 (父窗口)发出一 个消息后立即返回,不等待页面窗口 (子窗口)的处理,这样如果页面窗口 不能响应,则对主框架窗口也没有任何影响,这样一个页面窗口的^^死不会
影响主框架窗口的操作;通过将每个页面窗口都放在一个独立的线程里面, 一个页面窗口^f叚死,其它页面窗口不会受到影响,因此本发明实施例可以4巴 假死限制在一个页面窗口的范围之内,有效防止一个页面窗口假死导致整个 浏览器假死的问题。
综上所述,本发明实施例通过去掉主框架窗口与页面窗口之间的父子关 系,并在主框架窗口与页面窗口之间采用异步方式通信,使主框架窗口发出 一个消息后立即返回,不等待页面窗口的处理,即使页面窗口不能响应,对 主框架窗口也没有任何影响,从而避免了 一个页面窗口假死导致整个浏览器 假死的问题,有效增强了用户体验。
另外,在单线程环境下,通过为每个页面设置独立的线程,对应独立的 消息队列,解决了单线程环境下一个页面假死,导致所有页面假死的问题。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步 骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一计算机 可读存储介质中。该可读存储介质例如只读存储器(简称ROM)、随机存取 存储器(简称RAM)、磁盘、光盘等。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种多页面浏览器防假死方法,其特征在于,包括将页面窗口作为顶层窗口,并去掉页面窗口与主框架窗口之间的父子关系,使页面窗口与主框架窗口平级;去掉父子关系的页面窗口与主框架窗口之间通过异步方式通信。
2、 如权利要求l所述的方法,其特征在于,还包括 在所述去掉父子关系的页面窗口与主框架窗口之间模拟父子关系的表现。
3、 如权利要求2所述的方法,其特征在于,所述^f莫拟父子关系的表现包括若主框架窗口移动、改变大小、显示或隐藏,则页面窗口也相应的移 动、改变大小、显示或隐藏。
4、 如权利要求l、 2或3所述的方法,其特征在于,还包括 在单线程环境中,为每个页面窗口设置单独的线程。
5、 一种多页面浏览器防假死装置,其特征在于,包括 第一设置单元,用于将页面窗口设置为顶层窗口,并去掉页面窗口与主框架窗口之间的父子关系,使页面窗口与主框架窗口平级;通信单元,用于在去掉父子关系的页面窗口与主框架窗口之间通过异步 方式ii/f言。
6、 如权利要求5所述的装置,其特征在于,还包括模拟单元,用于在所述去掉父子关系的页面窗口与主框架窗口之间模拟 父子关系的表现。
7、 如权利要求5或6所述的装置,其特征在于,在单线程环境中,所述装 置还包括第二设置单元,用于为每个页面窗口设置单独的线程。
全文摘要
本发明实施例涉及通信技术领域中一种多页面浏览器防假死方法,将页面窗口作为顶层窗口,并去掉页面窗口与主框架窗口之间的父子关系,使页面窗口与主框架窗口平级;去掉父子关系的页面窗口与主框架窗口之间通过异步方式通信。本发明实施例还提供一种多页面浏览器防假死装置。本发明实施例通过去掉主框架窗口与页面窗口之间的父子关系,并在主框架窗口与页面窗口之间采用异步方式通信,使主框架窗口发出一个消息后立即返回,不等待页面窗口的处理,即使页面窗口不能响应,对主框架窗口也没有任何影响,从而避免了一个页面窗口假死导致整个浏览器假死的问题,有效增强了用户体验。
文档编号G06F9/46GK101609470SQ20091015200
公开日2009年12月23日 申请日期2009年7月2日 优先权日2009年7月2日
发明者峻 严, 斌 刘, 刘方敏, 登 罗, 奎 黄 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1