多標(biāo)簽頁瀏覽器防假死的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種多頁面瀏覽器防假死的方法和系統(tǒng)。
【背景技術(shù)】
[0002]一個(gè)多標(biāo)簽頁瀏覽器下可以包括多個(gè)標(biāo)簽頁,若該瀏覽器下的一個(gè)標(biāo)簽頁假死,則會(huì)導(dǎo)致該該瀏覽器下的其他標(biāo)簽頁均無響應(yīng),在之后的時(shí)間里可能要關(guān)閉進(jìn)程才能關(guān)掉沒有響應(yīng)的瀏覽器,否則沒有任何辦法。
[0003]現(xiàn)有的多標(biāo)簽頁瀏覽器防假死技術(shù),通過為瀏覽器的每個(gè)標(biāo)簽頁均單獨(dú)分配一個(gè)進(jìn)程,然后由瀏覽器主框架窗口的進(jìn)程控制每個(gè)標(biāo)簽頁的進(jìn)程,從而達(dá)到在切換標(biāo)簽頁時(shí),各個(gè)標(biāo)簽頁之間的窗口消息不互相影響的目的。但是,若標(biāo)簽頁的窗口消息響應(yīng)不及時(shí),則可能會(huì)出現(xiàn)主框架窗口和標(biāo)簽頁分離的情況,影響用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0004]基于此,有必要提供一種多標(biāo)簽頁瀏覽器防假死的方法和系統(tǒng),用于解決主框架窗口和標(biāo)簽頁分離的問題。
[0005]一種多標(biāo)簽頁瀏覽器防假死的方法,包括以下步驟:
[0006]將瀏覽器窗口創(chuàng)建成分層窗口,所述分層窗口包括植染窗口和交互窗口,并將所述渲染窗口設(shè)置為透明窗口;
[0007]為所述渲染窗口和所述交互窗口分別設(shè)置單獨(dú)的進(jìn)程;
[0008]通過消息鉤子獲取所述渲染窗口的渲染信息和所述交互窗口的交互行為信息,并將所獲取的渲染信息發(fā)送給所述交互窗口,將所獲取的交互行為信息發(fā)送給所述渲染窗P ;
[0009]在所述交互窗口顯示所述渲染信息對(duì)應(yīng)的網(wǎng)頁渲染效果,在所述渲染窗口模擬所述交互行為信息對(duì)應(yīng)的用戶交互行為。
[0010]在其中一個(gè)實(shí)施例中,在所述通過消息鉤子獲取所述渲染窗口的渲染數(shù)據(jù)和所述交互窗口的交互行為信息,并將所獲取的渲染信息發(fā)送給所述交互窗口,將所獲取的交互行為信息發(fā)送給所述渲染窗口步驟之前,還包括:
[0011]判斷所述消息鉤子是否啟動(dòng),若是,則執(zhí)行所述通過消息鉤子獲取所述渲染窗口的渲染信息和所述交互窗口的交互行為信息的步驟,否則,啟動(dòng)消息鉤子。
[0012]在其中一個(gè)實(shí)施例中,在所述將瀏覽器窗口創(chuàng)建成分層窗口,所述分層窗口包括渲染窗口和交互窗口,并將所述渲染窗口設(shè)置為透明窗口步驟之前,還包括:為瀏覽器的各個(gè)標(biāo)簽頁分別設(shè)置單獨(dú)的進(jìn)程。
[0013]在其中一個(gè)實(shí)施例中,所述交互行為信息包括鼠標(biāo)位置、鼠標(biāo)按鍵操作和鍵盤按鍵操作。
[0014]一種多標(biāo)簽頁瀏覽器防假死的系統(tǒng),包括分層窗口創(chuàng)建模塊、交互渲染進(jìn)程設(shè)置模塊、信息獲取模塊和信息處理模塊;其中:
[0015]所述分層窗口創(chuàng)建模塊,被配置以將瀏覽器窗口創(chuàng)建成分層窗口,所述分層窗口包括渲染窗口和交互窗口,并將所述渲染窗口設(shè)置為透明窗口;
[0016]所述交互渲染進(jìn)程設(shè)置模塊,被配置以為所述渲染窗口和所述交互窗口分別設(shè)置單獨(dú)的進(jìn)程;
[0017]所述信息獲取模塊,被配置以通過消息鉤子獲取所述渲染窗口的渲染信息和所述交互窗口的交互行為信息,并將所獲取的渲染信息發(fā)送給所述交互窗口,將所獲取的交互行為信息發(fā)送給所述渲染窗口;
[0018]所述信息處理模塊,被配置以在所述交互窗口顯示所述渲染信息對(duì)應(yīng)的網(wǎng)頁渲染效果,在所述渲染窗口模擬所述交互行為信息對(duì)應(yīng)的用戶交互行為。
[0019]在其中一個(gè)實(shí)施例中,所述多標(biāo)簽頁瀏覽器防假死的系統(tǒng)還包括判斷模塊,所述判斷模塊被配置以判斷所述消息鉤子是否啟動(dòng),若是,則通知所述信息獲取模塊消息鉤子已啟動(dòng),否則,啟動(dòng)消息鉤子。
[0020]在其中一個(gè)實(shí)施例中,所述多標(biāo)簽頁瀏覽器防假死的系統(tǒng)還包括標(biāo)簽頁進(jìn)程設(shè)置模塊,所述標(biāo)簽頁進(jìn)程設(shè)置模塊,被配置以為瀏覽器的各個(gè)標(biāo)簽頁設(shè)置單獨(dú)的進(jìn)程。
[0021]在其中一個(gè)實(shí)施例中,所述交互行為信息包括鼠標(biāo)位置、鼠標(biāo)按鍵操作和鍵盤按鍵操作。
[0022]上述多標(biāo)簽頁瀏覽器防假死的方法和系統(tǒng),將瀏覽器窗口創(chuàng)建成交互窗口和透明的渲染窗口,然后通過將消息鉤子注入到瀏覽器控件的進(jìn)程中,將所述渲染窗口的渲染信息發(fā)送到所述交互窗口進(jìn)行顯示,并將所述交互窗口的交互行為信息發(fā)送到渲染窗口以模擬用戶交互行為,從而使得在所述渲染窗口無法及時(shí)響應(yīng)用戶的交互行為信息時(shí),所述交互窗口依然可以將所述渲染窗口在停止響應(yīng)前的最后一張圖片進(jìn)行顯示,不會(huì)造成瀏覽器主框架窗口和各個(gè)標(biāo)簽頁分離的情況。而且所述瀏覽器下的各個(gè)標(biāo)簽頁均設(shè)置有單獨(dú)的進(jìn)程,因此一個(gè)標(biāo)簽頁假死,并不會(huì)影響到其他標(biāo)簽頁。
【附圖說明】
[0023]圖1為本發(fā)明多標(biāo)簽頁瀏覽器防假死的方法一個(gè)實(shí)施例的流程圖;
[0024]圖2為本發(fā)明多標(biāo)簽頁瀏覽器防假死的系統(tǒng)一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明多標(biāo)簽頁瀏覽器防假死的方法和系統(tǒng)的【具體實(shí)施方式】進(jìn)行說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不被配置以限定本發(fā)明。
[0026]參見圖1,一個(gè)實(shí)施例中,本發(fā)明多標(biāo)簽頁瀏覽器防假死的方法包括以下步驟:
[0027]S100,將瀏覽器窗口創(chuàng)建成分層窗口,所述分層窗口包括植染窗口和交互窗口,并將所述渲染窗口設(shè)置為透明窗口。
[0028]其中,可以米用微軟的分層窗口技術(shù)將瀏覽器窗口創(chuàng)建成植染窗口和交互窗口的形式,并將所述渲染窗口設(shè)置為透明窗口。所述分層窗口可以位于所述交互窗口的上層,且所述分層窗口與所述交互窗口的大小可以相同。由于微軟的分層窗口技術(shù)為已知技術(shù),故在此不再贅述。
[0029]在步驟SlOO之前,所述多標(biāo)簽頁瀏覽器防假死的方法還包括:為瀏覽器的各個(gè)標(biāo)簽頁分別設(shè)置單獨(dú)的進(jìn)程。
[0030]其中,在單進(jìn)程環(huán)境中,所述為瀏覽器的各個(gè)標(biāo)簽頁分別設(shè)置單獨(dú)的進(jìn)程的步驟是必須有的;但在多進(jìn)程環(huán)境中,所述為瀏覽器的各個(gè)標(biāo)簽頁分別設(shè)置單獨(dú)的進(jìn)程的步驟是可以省略的。所述單進(jìn)程環(huán)境為瀏覽器的各個(gè)標(biāo)簽頁均位于同一個(gè)進(jìn)程中。所述多進(jìn)程環(huán)境為瀏覽器的各個(gè)標(biāo)簽頁分別設(shè)置有單獨(dú)的進(jìn)程。
[0031]可以理解的,為瀏覽器的各個(gè)標(biāo)簽頁設(shè)置單獨(dú)的進(jìn)程,可以分離各個(gè)標(biāo)簽頁的消息循環(huán)。從而其中一個(gè)標(biāo)簽頁的消息循環(huán)阻塞時(shí),則不會(huì)影響其他標(biāo)簽頁的消息循環(huán)。
[0032]S200,為所述渲染窗口和所述交互窗口分別設(shè)置單獨(dú)的進(jìn)程。
[0033]其中,為了使瀏覽器的交互和渲染不互相干擾,可以將瀏覽器的交互和渲染分別設(shè)置單獨(dú)的進(jìn)程。本實(shí)施例中,所述渲染窗口和所述交互窗口設(shè)置在兩個(gè)不同的進(jìn)程中。即,所述渲染窗口負(fù)責(zé)瀏覽器的網(wǎng)頁渲染工作,所述交互窗口負(fù)責(zé)瀏覽器的用戶交互行為工作。
[0034]S300,通過消息鉤子獲取所述渲染窗口的渲染信息和所述交互窗口的交互行為信息,并將所獲取的渲染信息發(fā)送給所述交互窗口,將所獲取的交互行為信息發(fā)送給所述渲染窗口。
[0035]其中,可以將消息鉤子注入到瀏覽器控件的進(jìn)程中,來獲取渲染窗口的渲染信息和交互窗口的交互行為信息。所述交互行為信息可以包括鼠標(biāo)位置、鼠標(biāo)按鍵操作和鍵盤按鍵操作。所述交互行為信息是用戶通過鼠標(biāo)和/或鍵盤對(duì)瀏覽器進(jìn)行的操作信息。當(dāng)然,所述交互行為信息也可以只包括鼠標(biāo)位置和鼠標(biāo)按鍵操作。若所述交互行為信息不包括鍵盤按鍵操作時(shí),默認(rèn)用戶未通過鍵盤對(duì)瀏覽器進(jìn)行輸入操作。
[0036]所述渲染信息可以包括繪制圖片等信息。打開瀏覽器后,若用戶還未對(duì)瀏覽器進(jìn)行操作,則鉤子消息獲取默認(rèn)的瀏覽器初始渲染信息。
[0037]然后,將從所述渲染窗口的渲染進(jìn)程中獲取到的渲染信息發(fā)送到所述交互窗口,并將從所述交互窗口的交互進(jìn)程中獲取到的交互信息發(fā)送到所述渲染窗口。
[0038]優(yōu)選的,在步驟S300之前,本發(fā)明多標(biāo)簽頁瀏覽器防假死的方法還包括:判斷所述消息鉤子是否啟動(dòng),若是,則執(zhí)行所述通過消息鉤子獲取所述渲染窗口的渲染信息和所述交互窗口的交互行為信息的步驟,否則,啟動(dòng)消息鉤子。
[0039]其中,被消息鉤子注入的瀏覽器可以有多個(gè)從屬的標(biāo)簽頁,而多個(gè)標(biāo)簽頁可以使用一個(gè)消息鉤子,即可獲取每個(gè)標(biāo)簽頁對(duì)應(yīng)的渲染窗口的渲染信息和交互窗口的交互行為信息。對(duì)于第一個(gè)被打開的標(biāo)簽頁,判斷到消息鉤子還未啟動(dòng)后,則啟動(dòng)所述消息鉤子,并執(zhí)行步驟S300。而對(duì)于后續(xù)被打開的標(biāo)簽頁,判斷到消息鉤子已經(jīng)啟動(dòng),則執(zhí)行步驟S300。
[0040]S400,在所述交互窗口顯示所述渲染信息對(duì)應(yīng)的網(wǎng)頁渲染效果,在所述渲染窗口模擬所述交互行為信息對(duì)應(yīng)的用戶交互行為。
[0041]其中,所述交互窗口接收到所述渲染信息后,瀏覽器的信息處理模塊將所述渲染信息對(duì)應(yīng)的網(wǎng)頁渲染效果在所述交互窗口中進(jìn)行顯示。同樣,所述渲染窗口接收到所述交互行為信息后,瀏覽器的信息處理模塊在所述渲染窗口中模擬所述交互行為信息對(duì)應(yīng)的用戶交互行為。
[0042]上述多標(biāo)簽頁瀏覽器防假死的方法,將瀏覽器窗口創(chuàng)建成交互窗口和透明的渲染窗口,然后通過將消息鉤子注入到瀏覽器控件的進(jìn)程中,將所述渲染窗口的渲染信息發(fā)送到所述交互窗口進(jìn)行顯示,并將所述交互窗口的交互行為信息發(fā)送到渲染窗口模擬用戶交互行為,從而使得在所述渲染窗口無法及時(shí)響應(yīng)用戶的交互行為信息時(shí),所述交互窗口依然將所述渲染窗口在停止響應(yīng)前的最后一張圖片進(jìn)行顯示,不會(huì)造成瀏覽器主框架窗口和各個(gè)標(biāo)簽頁分離的情況。而且所述瀏覽器下的各個(gè)標(biāo)簽頁均設(shè)置有單獨(dú)的進(jìn)程,因此瀏覽器下的一個(gè)標(biāo)簽頁假死,并不會(huì)影響到瀏覽器下的其他標(biāo)簽頁。
[0043]基于同一發(fā)明構(gòu)思,本發(fā)