專利名稱:一種多頁面瀏覽器防假死方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種多頁面瀏覽器防假死方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的蓬勃發(fā)展,瀏覽器也得到了很大的發(fā)展,從開始的單頁面 瀏覽器,逐步過渡到現(xiàn)在的多頁面瀏覽器?,F(xiàn)在的瀏覽器絕大部分都是多頁 面瀏覽器。多頁面瀏覽器也就是能在一個窗口同時打開多個頁面,其優(yōu)點是 多個頁面切換更方便,資源占用更少,瀏覽體驗更好。
但是,多頁面瀏覽器至少存在如下缺點由于一個多頁面瀏覽器是一個 整體,如果一個頁面假死(所述假死是瀏覽器的一個出問題的狀態(tài),表現(xiàn)為 界面不刷新,點擊任何按鈕沒有響應(yīng),無法進行任何操作的一種狀態(tài)),那 么整個瀏覽器都會假死,使整個瀏覽器點擊任何按鍵都不能操作,如果想要 打開新的窗口,只能重新啟動瀏覽器,這樣在用戶體檢上給用戶帶來了很大 的不便。
現(xiàn)有技術(shù)針對Chrome瀏覽器提供一種防假死解決方案,Chrome瀏覽器使 用的是無窗口的一種頁面渲染方式,頁面根本就沒有窗口,也不會導(dǎo)致假 死。因此,需要一種多頁面瀏覽器的防假死技術(shù)。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種多頁面瀏覽器防假死方法及裝置,有效防止一個 頁面假死導(dǎo)致整個瀏覽器假死的問題。本發(fā)明實施例是通過以下技術(shù)方案實現(xiàn)的 本發(fā)明實施例提供一種多頁面瀏覽器防假死方法,包括 將頁面窗口作為頂層窗口 ,并去掉頁面窗口與主框架窗口之間的父子關(guān) 系,使頁面窗口與主框架窗口平級;
去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步方式通信。 還包括
在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模擬父子關(guān)系的表現(xiàn)。
所述模擬父子關(guān)系的表現(xiàn)包括
若主框架窗口移動、改變大小、顯示或隱藏,則頁面窗口也相應(yīng)的移 動、改變大小、顯示或隱藏。 所述方法還包括
在單線程環(huán)境中,為每個頁面窗口設(shè)置單獨的線程。
本發(fā)明實施例提供一種多頁面瀏覽器防假死裝置,包括
第一設(shè)置單元,用于將頁面窗口設(shè)置為頂層窗口,并去掉頁面窗口與主
框架窗口之間的父子關(guān)系,使頁面窗口與主框架窗口平級;
通信單元,用于在去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步
方式通信。 還包括
模擬單元,用于在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模擬 父子關(guān)系的表現(xiàn)。
在單線程環(huán)境中,所述裝置還包括
第二設(shè)置單元,用于為每個頁面窗口設(shè)置單獨的線程。
由上述本發(fā)明實施例提供的技術(shù)方案可以看出,本發(fā)明實施例通過去掉 主框架窗口與頁面窗口之間的父子關(guān)系,并在主框架窗口與頁面窗口之間采用異步方式通信,使主框架窗口發(fā)出一個消息后立即返回,不等待頁面窗口 的處理,即使頁面窗口不能響應(yīng),對主框架窗口也沒有任何影響,從而避免 了 一個頁面窗口假死導(dǎo)致整個瀏覽器假死的問題,有效增強了用戶體驗。
圖1為本發(fā)明實施例Windows系統(tǒng)下,父子窗口關(guān)系示意圖; 圖2為本發(fā)明實施例多頁面瀏覽器防假死方法示意圖; 圖3為本發(fā)明實施例單線程設(shè)置成多線程后的消息循環(huán)示意圖; 圖4為本發(fā)明實施例多頁面瀏覽器》文假死裝置結(jié)構(gòu)示意圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行 清楚、完整地描述,可以理解的是,所描述的實施例僅僅是本發(fā)明一部分實 施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護 的范圍。
首先分析多頁面瀏覽器產(chǎn)生假死的原因
在Windows系統(tǒng)下,所有的有窗口 (所述有窗口,即有可顯示^^用戶且可 操作的窗口)的程序都是消息驅(qū)動的,也就是用戶操作鼠標(biāo)和鍵盤會產(chǎn)生各 種消息,這些消息會分發(fā)到當(dāng)前系統(tǒng)有焦點的窗口 (一個系統(tǒng)中同一時刻僅 有一個窗口有焦點,通??匆姷慕裹c,比如編輯框里面閃爍的光標(biāo)),當(dāng)前 有焦點的窗口收到消息以后,會根據(jù)消息的不同類型做出不同的響應(yīng)。比如 鼠標(biāo)按下,鼠標(biāo)雙擊,鍵盤按鍵等都會產(chǎn)生消息。根據(jù)這些消息,使應(yīng)用程 序不斷的做出響應(yīng),刷新界面,完成操作。
系統(tǒng)內(nèi)部消息處理方式為系統(tǒng)會把消息不斷的放到消息隊列里面,每個有窗口的執(zhí)行線程都有一個消息循環(huán),這個消息循環(huán)不斷的從消息隊列里 面獲取消息,處理消息。但是如果處理消息的部分發(fā)生了阻塞, 一直沒有運 行完成,那么這個消息循環(huán)就不能獲取新的消息,這時再對這個頁面進行操 作就會不響應(yīng)了。出現(xiàn)這種情況,頁面不會刷新,因為必須要收到刷新的消 息才會刷新界面,按一個按鈕也沒有響應(yīng),于是這個消息循環(huán)就阻塞在消息 處理這里,不響應(yīng)任何操作了,也就是出現(xiàn)假死。
Windows系統(tǒng)中每一個線程有一個消息循環(huán),但在單線程環(huán)境下,多個頁 面共用一個消息循環(huán), 一個消息循環(huán)的阻塞會導(dǎo)致整個程序的阻塞?;谠?分析,本發(fā)明實施例為每個頁面窗口設(shè)置一個單獨的線程。也就是構(gòu)造出多 線程環(huán)境。
但在多線程環(huán)境下還存在另外一個問題在Windows系統(tǒng)下,窗口之間是 有關(guān)系的。如圖l中所示,圖l中有一個頂層窗口,頂層窗口就是在任務(wù)欄上 有一個項,并且有最小化,最大化和關(guān)閉按鈕的一個窗口。而這個頂層窗口 里面的一個按鈕也是一個窗口,即圖中的按鈕窗口,頂層窗口與按鈕窗口之 間為父子關(guān)系,稱為父子窗口。父子窗口之間的聯(lián)系為當(dāng)父窗口移動的時 候,子窗口也必須要移動。當(dāng)父窗口隱藏的時候,子窗口也必須隱藏,父窗 口顯示的時候,子窗口也必須要一起顯示。在多線程多頁面瀏覽器的環(huán)境 下,主框架窗口為頂層窗口 (父窗口),和頁面窗口 (子窗口)之間就是父 子窗口的關(guān)系。每個頁面窗口各在一個線程,主框架窗口在一個線程。主框 架窗口所在線程就是地址欄,工具欄等所在的線程,頁面窗口所在線程就是 頁面窗口所在的線程。在多線程的情況下,父窗口的某些操作是通過發(fā)消息 來和子窗口同步的,比如移動,當(dāng)父窗口移動的時候,向子窗口發(fā)一個消 息,然后子窗口也移動。這里有一個問題,如果子窗口所在的線程阻塞了, 不響應(yīng)消息了,那么父窗口會一直等待這個消息的返回,于是父窗口也阻塞 了,導(dǎo)致父窗口所在的線程也阻塞了,于是整個程序就不響應(yīng)了。因此,在多線程的情況下,如果一個頁面窗口出現(xiàn)了假死,則操作主框架窗口的時 候,主框架窗口需要發(fā)消息與頁面窗口同步,但頁面窗口不響應(yīng)消息,于是 主框架窗口就等待頁面窗口,導(dǎo)致整個瀏覽器不響應(yīng)出現(xiàn)假死?;趯Χ嗑€ 程環(huán)境的分析,本發(fā)明實施例通過去掉頁面窗口與主框架窗口之間的父子關(guān) 系,并在頁面窗口與主框架窗口間通過異步方式通信來解決該問題。
通過上面的分析本發(fā)明實施例提供一種多頁面瀏覽器防假死方法,如圖2
所示,該方法包4舌
步驟20:為每個頁面窗口設(shè)置單獨的線程;
在單線程環(huán)境中,該步驟是必須的,而在多線程環(huán)境下,該步驟是可以 省略的。
所述為每個頁面窗口設(shè)置單獨的線程,即將每個頁面窗口都力文在一個獨 立的線程里面。
在單線程環(huán)境中,如圖3中所示,把每個頁面窗口都放在一個獨立的線程 里面,這樣每個頁面窗口就有了一個消息循環(huán),當(dāng)某一個線程的消息循環(huán)發(fā) 生阻塞的時候,不會影響到其它線程的消息循環(huán)。也就是說,當(dāng)一個頁面窗 口假死的時候,其它頁面窗口不會受到影響。
可選地,為每個頁面窗口單獨i殳置一個進程,從而可以進一步防止崩潰 的發(fā)生。
步驟21:將頁面窗口作為頂層窗口,并去掉頁面窗口與主框架窗口之間 的父子關(guān)系,使頁面窗口與主框架窗口平級;
所述將頁面窗口作為頂層窗口的方法包括在每個頁面窗口的任務(wù)欄上 設(shè)置一個包括最小化,最大化和關(guān)閉按鈕的一個項。
所述使頁面窗口與主框架窗口平級,即令頁面窗口和主框架窗口均為頂 層窗口,不存在父子關(guān)系。每個窗口對應(yīng)唯——個ID,系統(tǒng)內(nèi)部才莫塊記錄該 ID以及記錄該ID對應(yīng)的窗口是頁面窗口還是主框架窗口 ,這樣即使將頁面窗口與主框架窗口設(shè)置為平級,系統(tǒng)內(nèi)部也能區(qū)分哪個窗口是頁面窗口 ,哪個 窗口是主框架窗口。
將頁面窗口作為頂層窗口后,若頁面窗口不響應(yīng)主框架窗口,則用戶可 以選擇切換到別的頁面窗口或關(guān)閉該頁面窗口 。
步驟22:去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步方式通
所述異步方式通信,即主框架窗口發(fā)出一個消息給頁面窗口以后立即返 回,不用等待消息的處理完成。
由于現(xiàn)有技術(shù)中父窗口(主框架窗口)采用發(fā)送同步消息方式與子窗口 (頁面窗口)同步的,比如移動,當(dāng)父窗口移動的時候,向子窗口發(fā)一個消 息,然后子窗口也移動,這時如果子窗口所在的線程阻塞了 ,不響應(yīng)消息 了,那么父窗口會一直等待這個消息的返回,于是父窗口也阻塞了,導(dǎo)致父 窗口所在的線程也阻塞了,于是整個程序就不響應(yīng)了。而本發(fā)明實施例中由 于在頁面窗口與主框架窗口之間通過異步方式通信,主框架窗口發(fā)出 一個消 息給頁面窗口以后立即返回,不用等待消息的處理完成,這樣即使頁面窗口 不響應(yīng)消息,主框架窗口還是可以繼續(xù)處理自己的消息,這樣就避免了主框 架窗口因為頁面窗口的不響應(yīng)而導(dǎo)致自己也不響應(yīng)的問題,可以將布I死限制 在一個頁面窗口。
另外,在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模擬父子關(guān)系 的表現(xiàn)。所述模擬父子關(guān)系的表現(xiàn)包括若主框架窗口移動、改變大小、顯 示或隱藏,則頁面窗口也相應(yīng)的移動、改變大小、顯示或隱藏。若頁面窗口 不響應(yīng)主框架窗口 ,則用戶可以根據(jù)需要單獨對該不響應(yīng)的頁面窗口選擇切 換到別的頁面或關(guān)閉該頁面窗口 。所述模擬操作可以只限于顯示給用戶的頁 面窗口與主框架窗口之間,例如,若主框架窗口移動,則用戶手動才莫擬主框 架窗口與頁面窗口之間原父子關(guān)系的表現(xiàn),即用戶手動移動顯示給用戶的頁面窗口。
本發(fā)明實施例把每個頁面都放在一個獨立的線程里面, 一個頁面假死,其 它頁面不會受到影響,且去掉主框架窗口與頁面窗口之間的父子關(guān)系,并在 主框架窗口與頁面窗口間采用異步方式通信,則在主框架窗口 (父窗口)發(fā) 出一個消息后立即返回,不等待頁面窗口 (子窗口)的處理,這樣如果頁面 窗口不能響應(yīng),則對主框架窗口也沒有任何影響,這樣一個頁面窗口的作支死 不會影響主框架窗口的操作,可以把假死限制在一個頁面窗口的范圍之內(nèi), 有效防止一個頁面窗口 ,I死導(dǎo)致整個瀏覽器,支死的問題。
本發(fā)明實施例還提供一種多頁面瀏覽器防假死裝置,如圖4所示,該裝置
包括
第一設(shè)置單元40,用于將頁面窗口設(shè)置為頂層窗口,并去掉頁面窗口與 主框架窗口之間的父子關(guān)系,使頁面窗口與主框架窗口平級;
通信單元41 ,用于在去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異 步方式通信。
所述裝置還包括
模擬單元42,用于在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模 擬父子關(guān)系的表現(xiàn)。所述模擬父子關(guān)系的表現(xiàn)包括若主框架窗口移動、改 變大小、顯示或隱藏,則頁面窗口也相應(yīng)的移動、改變大小、顯示或隱藏。
在單線程環(huán)境中,所述裝置還包括
第二設(shè)置單元43,用于為每個頁面窗口設(shè)置單獨的線程,也就是將每個 頁面都放在一個獨立的線程里面。
本發(fā)明實施例所述裝置可以設(shè)置于瀏覽器管理系統(tǒng)已有的裝置內(nèi),也可 以為新增的裝置。本發(fā)明實施例所述多頁面瀏覽器防假死方法及裝置適用于 任何瀏覽器內(nèi)核,例如IE內(nèi)核。
本發(fā)明實施例去掉主框架窗口與頁面窗口之間的父子關(guān)系,并在主框架窗口與頁面窗口之間采用異步方式通信,則在主框架窗口 (父窗口)發(fā)出一 個消息后立即返回,不等待頁面窗口 (子窗口)的處理,這樣如果頁面窗口 不能響應(yīng),則對主框架窗口也沒有任何影響,這樣一個頁面窗口的^^死不會
影響主框架窗口的操作;通過將每個頁面窗口都放在一個獨立的線程里面, 一個頁面窗口^f叚死,其它頁面窗口不會受到影響,因此本發(fā)明實施例可以4巴 假死限制在一個頁面窗口的范圍之內(nèi),有效防止一個頁面窗口假死導(dǎo)致整個 瀏覽器假死的問題。
綜上所述,本發(fā)明實施例通過去掉主框架窗口與頁面窗口之間的父子關(guān) 系,并在主框架窗口與頁面窗口之間采用異步方式通信,使主框架窗口發(fā)出 一個消息后立即返回,不等待頁面窗口的處理,即使頁面窗口不能響應(yīng),對 主框架窗口也沒有任何影響,從而避免了 一個頁面窗口假死導(dǎo)致整個瀏覽器 假死的問題,有效增強了用戶體驗。
另外,在單線程環(huán)境下,通過為每個頁面設(shè)置獨立的線程,對應(yīng)獨立的 消息隊列,解決了單線程環(huán)境下一個頁面假死,導(dǎo)致所有頁面假死的問題。
本領(lǐng)域普通技術(shù)人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步 驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一計算機 可讀存儲介質(zhì)中。該可讀存儲介質(zhì)例如只讀存儲器(簡稱ROM)、隨機存取 存儲器(簡稱RAM)、磁盤、光盤等。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明 的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準(zhǔn)。
權(quán)利要求
1、一種多頁面瀏覽器防假死方法,其特征在于,包括將頁面窗口作為頂層窗口,并去掉頁面窗口與主框架窗口之間的父子關(guān)系,使頁面窗口與主框架窗口平級;去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步方式通信。
2、 如權(quán)利要求l所述的方法,其特征在于,還包括 在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模擬父子關(guān)系的表現(xiàn)。
3、 如權(quán)利要求2所述的方法,其特征在于,所述^f莫擬父子關(guān)系的表現(xiàn)包括若主框架窗口移動、改變大小、顯示或隱藏,則頁面窗口也相應(yīng)的移 動、改變大小、顯示或隱藏。
4、 如權(quán)利要求l、 2或3所述的方法,其特征在于,還包括 在單線程環(huán)境中,為每個頁面窗口設(shè)置單獨的線程。
5、 一種多頁面瀏覽器防假死裝置,其特征在于,包括 第一設(shè)置單元,用于將頁面窗口設(shè)置為頂層窗口,并去掉頁面窗口與主框架窗口之間的父子關(guān)系,使頁面窗口與主框架窗口平級;通信單元,用于在去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步 方式ii/f言。
6、 如權(quán)利要求5所述的裝置,其特征在于,還包括模擬單元,用于在所述去掉父子關(guān)系的頁面窗口與主框架窗口之間模擬 父子關(guān)系的表現(xiàn)。
7、 如權(quán)利要求5或6所述的裝置,其特征在于,在單線程環(huán)境中,所述裝 置還包括第二設(shè)置單元,用于為每個頁面窗口設(shè)置單獨的線程。
全文摘要
本發(fā)明實施例涉及通信技術(shù)領(lǐng)域中一種多頁面瀏覽器防假死方法,將頁面窗口作為頂層窗口,并去掉頁面窗口與主框架窗口之間的父子關(guān)系,使頁面窗口與主框架窗口平級;去掉父子關(guān)系的頁面窗口與主框架窗口之間通過異步方式通信。本發(fā)明實施例還提供一種多頁面瀏覽器防假死裝置。本發(fā)明實施例通過去掉主框架窗口與頁面窗口之間的父子關(guān)系,并在主框架窗口與頁面窗口之間采用異步方式通信,使主框架窗口發(fā)出一個消息后立即返回,不等待頁面窗口的處理,即使頁面窗口不能響應(yīng),對主框架窗口也沒有任何影響,從而避免了一個頁面窗口假死導(dǎo)致整個瀏覽器假死的問題,有效增強了用戶體驗。
文檔編號G06F9/46GK101609470SQ20091015200
公開日2009年12月23日 申請日期2009年7月2日 優(yōu)先權(quán)日2009年7月2日
發(fā)明者峻 嚴(yán), 斌 劉, 劉方敏, 登 羅, 奎 黃 申請人:騰訊科技(深圳)有限公司