一種瀏覽器及其結(jié)束標(biāo)簽頁的方法
【專利摘要】一種瀏覽器及其結(jié)束標(biāo)簽頁的方法;所述方法包括:當(dāng)主進(jìn)程對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁;Trident子進(jìn)程卸載該Trident標(biāo)簽頁,Trident子進(jìn)程完成卸載后通知主進(jìn)程;主進(jìn)程銷毀該Trident標(biāo)簽頁。本申請(qǐng)能夠避免基于Trident內(nèi)核的瀏覽器在結(jié)束標(biāo)簽頁時(shí)僵死的情況。
【專利說明】一種瀏覽器及其結(jié)束標(biāo)簽頁的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)領(lǐng)域,具體涉及一種瀏覽器及其結(jié)束標(biāo)簽頁的方法。
【背景技術(shù)】
[0002]目前許多網(wǎng)頁瀏覽器均采用多進(jìn)程的雙內(nèi)核架構(gòu),比如基于Webkit內(nèi)核和Trident內(nèi)核的多進(jìn)程雙核瀏覽器。
[0003]雙核瀏覽器,即有兩個(gè)內(nèi)核的瀏覽器。由于IE瀏覽器在國內(nèi)的普及率非常高,所以造成了很多網(wǎng)上銀行和支付系統(tǒng)只支持IE的Trident內(nèi)核,其他瀏覽器訪問根本無法進(jìn)行正常支付和轉(zhuǎn)賬等業(yè)務(wù)。而WebKit內(nèi)核的非IE瀏覽器以更高的性能和更好的用戶體驗(yàn)擁有了越來越多的用戶。于是雙核瀏覽器應(yīng)運(yùn)而生,在不用網(wǎng)上交易的一般網(wǎng)站,使用速度快的WebKit內(nèi)核訪問,這就是所謂的“高速模式”;在訪問支付寶或者網(wǎng)上銀行的時(shí)候,使用Trident內(nèi)核的“兼容模式”來進(jìn)行業(yè)務(wù)。這樣一個(gè)瀏覽器多個(gè)內(nèi)核,滿足同一用戶的不同需求。
[0004]Trident 一又稱為MSHTML,是微軟的窗口操作系統(tǒng)(Windows)搭載的網(wǎng)頁瀏覽器一 Internet Explorer的排版引擎的名稱。
[0005]Webkit,是一個(gè)開源的瀏覽器引擎。WebKit的優(yōu)勢(shì)在于高效穩(wěn)定,兼容性好,且源碼結(jié)構(gòu)清晰,易于維護(hù)。盡管Webkit內(nèi)核是個(gè)非常好的網(wǎng)頁解釋機(jī)制,但是由于微軟把IE捆綁在Windows里,導(dǎo)致許多網(wǎng)站都是按照IE來架設(shè)的,很多網(wǎng)站不兼容Webkit內(nèi)核,比如登錄界面、網(wǎng)銀等網(wǎng)頁均不可使用Webkit內(nèi)核。
[0006]多進(jìn)程雙核瀏覽器的主進(jìn)程負(fù)責(zé)主界面及其邏輯,以及對(duì)子進(jìn)程進(jìn)行管理和通信。每個(gè)標(biāo)簽頁的網(wǎng)頁解析、渲染則由子進(jìn)程負(fù)責(zé)。有兩種子進(jìn)程類型:Webkit內(nèi)核子進(jìn)程和Trident內(nèi)核子進(jìn)程。由于Trident內(nèi)核的特殊性,Trident內(nèi)核創(chuàng)建了一個(gè)用于呈現(xiàn)網(wǎng)頁的WebBiOwser (網(wǎng)頁瀏覽器)窗口嵌于主進(jìn)程的標(biāo)簽頁容器窗口內(nèi),這種架構(gòu)導(dǎo)致在關(guān)閉標(biāo)簽頁時(shí)可能引發(fā)嚴(yán)重的問題。
[0007]當(dāng)主進(jìn)程關(guān)閉一個(gè)標(biāo)簽頁(Tab)時(shí),它將調(diào)用WindowsAPI (ApplicationProgramming Interface,應(yīng)用程序編程接 口)DestroyWindow(銷毀指定窗口的函數(shù))來銷毀該標(biāo)簽頁的容器窗口及其子窗口。由于Trident內(nèi)核子進(jìn)程創(chuàng)建的WebBiOwser窗口是該標(biāo)簽頁的容器窗口的子窗口,因此,它也將在此過程中被銷毀。主進(jìn)程嘗試銷毀子進(jìn)程的子窗口時(shí),需要與子進(jìn)程通信,Destroyffindow發(fā)送WM_DESTR0Y和WM_NCDESTR0Y消息給子窗口,并使它變成非激活狀態(tài),移除鍵盤焦點(diǎn)。不幸的是,一些網(wǎng)頁在卸載時(shí)需要彈出模態(tài)對(duì)話框來提示用戶,比如,彈出“感謝您的訪問! ”、“確定要離開當(dāng)前頁面嗎?”、“請(qǐng)拔掉網(wǎng)銀U盾”等等,子進(jìn)程在標(biāo)簽頁關(guān)閉時(shí)卸載網(wǎng)頁并產(chǎn)生了模態(tài)對(duì)話框,這意謂著Π (User Interface,用戶界面)線程被模態(tài)對(duì)話框阻塞,它無法處理主進(jìn)程Destroyffindow發(fā)送的WM_DESTR0Y、WM_NCDESTR0Y消息,主進(jìn)程的UI線程便一直阻塞、等待這兩個(gè)消息被處理。同時(shí),子進(jìn)程彈出模態(tài)對(duì)話框時(shí)也需要與主進(jìn)程的主窗口進(jìn)行某些UI上的同步,比如使主窗口變?yōu)榉羌せ顮顟B(tài)、使主窗口不可用等等,這也意謂著子進(jìn)程將引發(fā)一些消息讓主進(jìn)程處理,但同樣不幸的是,主進(jìn)程的Π線程因?yàn)镈estIOyWind0w進(jìn)程未完成而阻塞。這樣,主進(jìn)程和子進(jìn)程雙方都無法繼續(xù),其Π線程均處于阻塞狀態(tài),無法響應(yīng)用戶的任何操作,這樣就會(huì)產(chǎn)生一個(gè)界面死鎖的嚴(yán)重問題,并最終導(dǎo)致進(jìn)程崩潰。
[0008]使用Trident內(nèi)核的多進(jìn)程瀏覽器理論上都存在這個(gè)問題,為了避免這個(gè)問題,現(xiàn)有的一種解決方案是可以實(shí)現(xiàn)IDocHostShowUI接口,接管ShowMessage (顯示信息)方法,在標(biāo)簽頁關(guān)閉時(shí)給子進(jìn)程作個(gè)標(biāo)記,讓它知道在這種情況下不要彈出對(duì)話框。通過在ShowMessage中判斷標(biāo)記,并返回信息欺騙Trident內(nèi)核已經(jīng)彈出了對(duì)話框而達(dá)到目的。這樣,瀏覽器在關(guān)閉標(biāo)簽頁時(shí),應(yīng)該彈出的提示框被忽略了。
[0009]另外,還有一種現(xiàn)有的解決方案是標(biāo)簽頁關(guān)閉時(shí)直接結(jié)束標(biāo)簽頁的子進(jìn)程,不給Trident內(nèi)核正常卸載的機(jī)會(huì)。這樣Trident內(nèi)核就不可能在網(wǎng)頁關(guān)閉時(shí)彈出模態(tài)對(duì)話框。
[0010]前述第一種方案的缺陷在于:一是ShowMessage方法并不能接管到全部的模態(tài)對(duì)話框彈出;二是屏蔽了本應(yīng)該彈出的模態(tài)對(duì)話框,對(duì)用戶的使用可能造成影響,沒有如實(shí)地展現(xiàn)網(wǎng)頁編寫者的意圖;三是某些網(wǎng)站如中國農(nóng)業(yè)銀行網(wǎng)站在U盾未拔掉的情況下會(huì)一直彈對(duì)話框提示,不顯示對(duì)話框時(shí),用戶根本不知道發(fā)生了什么事,用戶不拔掉U盾,網(wǎng)頁就無法卸載,最終進(jìn)入不斷彈對(duì)話框的死循環(huán)。前述第二種方案直接結(jié)束進(jìn)程很顯然不能在多個(gè)標(biāo)簽頁屬于同一進(jìn)程時(shí)進(jìn)行,否則,關(guān)閉一個(gè)標(biāo)簽頁會(huì)導(dǎo)致其它幾個(gè)屬于同一子進(jìn)程的標(biāo)簽頁被關(guān)閉。
【發(fā)明內(nèi)容】
[0011]本申請(qǐng)要解決的技術(shù)問題是如何避免基于Trident內(nèi)核的瀏覽器在結(jié)束標(biāo)簽頁時(shí)僵死的情況。
[0012]為了解決上述問題,本申請(qǐng)?zhí)峁┝艘环N瀏覽器結(jié)束標(biāo)簽頁的方法,包括:
[0013]當(dāng)主進(jìn)程對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁;
[0014]Trident子進(jìn)程卸載該Trident標(biāo)簽頁,Trident子進(jìn)程完成卸載后通知主進(jìn)程;
[0015]主進(jìn)程銷毀該Trident標(biāo)簽頁。
[0016]進(jìn)一步地,主進(jìn)程銷毀該Trident標(biāo)簽頁的情況包括:
[0017]關(guān)閉該Trident標(biāo)簽頁;或
[0018]將該Trident標(biāo)簽頁上導(dǎo)航到新的頁面。
[0019]進(jìn)一步地,主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟包括:
[0020]主進(jìn)程發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給Trident子進(jìn)程,并在該異步消息中攜帶一用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù);
[0021]所述Trident子進(jìn)程完成卸載后通知主進(jìn)程的步驟包括:
[0022]Trident子進(jìn)程發(fā)送指示卸載已完成的消息給主進(jìn)程,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù);
[0023]所述主進(jìn)程銷毀該Trident標(biāo)簽頁的步驟包括:
[0024]根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
[0025]進(jìn)一步地,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí),所述主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟中還包括:
[0026]所述主進(jìn)程保存導(dǎo)航的各參數(shù),中斷導(dǎo)航;
[0027]所述主進(jìn)程銷毀該Trident標(biāo)簽頁的操作的步驟包括:
[0028]所述主進(jìn)程根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
[0029]進(jìn)一步地,Trident子進(jìn)程卸載Trident標(biāo)簽頁的步驟包括:
[0030]Trident子進(jìn)程將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。
[0031]進(jìn)一步地,所述預(yù)設(shè)頁面為空白頁。
[0032]進(jìn)一步地,所述預(yù)定事件包括DocumentComplete事件。
[0033]進(jìn)一步地,Trident子進(jìn)程卸載Trident標(biāo)簽頁的步驟包括:
[0034]Trident子進(jìn)程設(shè)立一標(biāo)志并設(shè)為特定值,將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,如果該Trident標(biāo)簽頁彈出模態(tài)對(duì)話框時(shí)取消卸載,則停止卸載;
[0035]當(dāng)收到預(yù)設(shè)頁面的文檔完成DocumentComplete事件時(shí),Trident子進(jìn)程判斷是否當(dāng)前標(biāo)簽頁的統(tǒng)一資源定位符和所述預(yù)設(shè)頁面的一致且所述標(biāo)志的值為所述特定值,如果是則確定已完成該Trident標(biāo)簽頁的卸載。
[0036]本申請(qǐng)還提供了一種瀏覽器,包括:
[0037]主進(jìn)程模塊和Trident子進(jìn)程模塊;
[0038]所述主進(jìn)程模塊當(dāng)對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁;以及當(dāng)收到所述Trident子進(jìn)程模塊完成卸載的通知后銷毀該Trident標(biāo)簽頁;
[0039]所述Trident子進(jìn)程模塊用于根據(jù)所述主進(jìn)程模塊的通知后卸載Trident標(biāo)簽頁,完成卸載后通知所述主進(jìn)程模塊。
[0040]進(jìn)一步地,所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁的情況包括:
[0041]關(guān)閉該Trident標(biāo)簽頁;或
[0042]將該Trident標(biāo)簽頁上重新導(dǎo)航。
[0043]進(jìn)一步地,所述主進(jìn)程模塊通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁是指:
[0044]所述主進(jìn)程模塊發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給所述Trident子進(jìn)程模塊,并在該異步消息中攜帶一用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù);
[0045]所述Trident子進(jìn)程模塊完成卸載后通知主進(jìn)程是指:
[0046]所述Trident子進(jìn)程模塊發(fā)送指示卸載已完成的消息給所述主進(jìn)程模塊,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù);
[0047]所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁是指:
[0048]所述主進(jìn)程模塊根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
[0049]進(jìn)一步地,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí):
[0050]所述主進(jìn)程模塊在通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁時(shí)還保存導(dǎo)航的各參數(shù)并中斷導(dǎo)航;
[0051]所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁是指:
[0052]所述主進(jìn)程模塊根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
[0053]進(jìn)一步地,Trident子進(jìn)程模塊卸載Trident標(biāo)簽頁是指:
[0054]所述Trident子進(jìn)程模塊將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。
[0055]進(jìn)一步地,所述預(yù)設(shè)頁面為空白頁。
[0056]進(jìn)一步地,所述預(yù)定事件包括DocumentComplete事件。
[0057]進(jìn)一步地,Trident子進(jìn)程卸載Trident標(biāo)簽頁是指:
[0058]所述Trident子進(jìn)程模塊設(shè)立一標(biāo)志并設(shè)為特定值,將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,如果該Trident標(biāo)簽頁彈出模態(tài)對(duì)話框時(shí)取消卸載,則停止卸載;當(dāng)收到預(yù)設(shè)頁面的文檔完成DocumentComplete事件時(shí),判斷是否當(dāng)前標(biāo)簽頁的統(tǒng)一資源定位符和所述預(yù)設(shè)頁面的一致且所述標(biāo)志的值為所述特定值,如果是則確定已完成該Trident標(biāo)簽頁的卸載。
[0059]本申請(qǐng)的至少一個(gè)實(shí)施例可以使基于Trident內(nèi)核的瀏覽器能避免在結(jié)束標(biāo)簽頁時(shí)進(jìn)入界面死鎖的狀態(tài),并可以正常卸載標(biāo)簽頁;本申請(qǐng)的又一個(gè)實(shí)施例在關(guān)閉標(biāo)簽頁和重新導(dǎo)航的情況下都可以適用;本申請(qǐng)的另一個(gè)實(shí)施例可正常地展示關(guān)閉時(shí)的模態(tài)對(duì)話框,優(yōu)雅地關(guān)閉標(biāo)簽頁。當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【專利附圖】
【附圖說明】
[0060]圖1是實(shí)施例一的方法流程示意圖;
[0061]圖2是實(shí)施例一中具體的Trident標(biāo)簽頁上導(dǎo)航流程的示意圖;
[0062]圖3是實(shí)施例一中具體的Trident標(biāo)簽頁關(guān)閉流程的示意圖。
【具體實(shí)施方式】
[0063]下面將結(jié)合附圖及實(shí)施例對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行更詳細(xì)的說明。
[0064]需要說明的是,如果不沖突,本申請(qǐng)實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié)合,均在本申請(qǐng)的保護(hù)范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0065]實(shí)施例一,一種瀏覽器結(jié)束標(biāo)簽頁的方法,如圖1所示,包括下面的步驟SlOl?S103:
[0066]S101、當(dāng)主進(jìn)程對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁;
[0067]S102、Trident子進(jìn)程卸載該Trident標(biāo)簽頁,Trident子進(jìn)程完成卸載后通知主進(jìn)程;
[0068]S103、主進(jìn)程銷毀該Trident標(biāo)簽頁。
[0069]本技術(shù)方案通過完善主進(jìn)程與子進(jìn)程關(guān)閉標(biāo)簽頁的流程,使子進(jìn)程有機(jī)會(huì)優(yōu)雅地卸載來解決上述問題。主進(jìn)程在關(guān)閉標(biāo)簽頁時(shí)將會(huì)先通知Trident子進(jìn)程卸載當(dāng)前標(biāo)簽頁,而不是直接銷毀當(dāng)前標(biāo)簽頁。子進(jìn)程卸載完成當(dāng)前標(biāo)簽頁后通知主進(jìn)程,主進(jìn)程收到卸載完成的通知后才銷毀當(dāng)前標(biāo)簽頁。銷毀當(dāng)前標(biāo)簽頁的方法可以通過現(xiàn)有技術(shù)中的“調(diào)用Destroyffindow函數(shù)發(fā)送WM_DESTROY和WM_NCDESTROY消息給子進(jìn)程”來實(shí)現(xiàn)。所述瀏覽器結(jié)束標(biāo)簽頁的方法尤其適用于多進(jìn)程的瀏覽器。
[0070]本申請(qǐng)實(shí)例中的Trident標(biāo)簽頁及Trident子進(jìn)程基于Trident內(nèi)核啟動(dòng)。
[0071]可以看出,由于在主進(jìn)程調(diào)用DestroyWindow函數(shù)前,需要結(jié)束的標(biāo)簽頁實(shí)際上已經(jīng)卸載完成,因此不可能在子進(jìn)程處理WM DESTROY和WM_NCDESTROY消息期間彈出模態(tài)對(duì)話框;另外,主進(jìn)程所調(diào)用的Windows API DestroyWindow所發(fā)送的上述兩個(gè)消息均為同步消息,主進(jìn)程的主線程在這兩個(gè)消息得到處理前將處于阻塞狀態(tài),而上述步驟SlOl中主進(jìn)程還沒有調(diào)用Windows API DestroyWindow (直到步驟S103才調(diào)用),在通知子進(jìn)程卸載后,主進(jìn)程可以繼續(xù)進(jìn)行其它事務(wù)的處理,因此即使步驟S102的子進(jìn)程卸載過程中彈出模態(tài)對(duì)話框,主進(jìn)程也能夠和子進(jìn)程進(jìn)行交互,也就不可能出現(xiàn)【背景技術(shù)】中所提到的死鎖情況。本實(shí)施例的一種備選方案中,Trident子進(jìn)程卸載Trident標(biāo)簽頁的步驟可以但不限于具體包括:
[0072]Trident子進(jìn)程將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。所述預(yù)定事件包括DocumentComplete事件,還可以包括onload事件等。
[0073]本實(shí)施例的一種備選方案中,所述預(yù)設(shè)頁面可以為但不限于為空白頁(about:blank),也可以是其它預(yù)設(shè)的、在卸載時(shí)不會(huì)彈出模態(tài)對(duì)話框的頁面。
[0074]本實(shí)施例的優(yōu)選方案中,Trident子進(jìn)程是通過導(dǎo)航到預(yù)設(shè)頁面并通過預(yù)設(shè)頁面的DocumentComplete事件模擬卸載完成事件。在發(fā)明本申請(qǐng)的技術(shù)方案的過程中,發(fā)明人發(fā)現(xiàn)Trident子進(jìn)程的WebBrowser控件卸載完成時(shí)沒有一個(gè)專門表示卸載完成的事件可以利用,因此想到用其它事件來模擬卸載完成事件;最終找到一種巧妙的方案一一通過導(dǎo)航到空白頁(about:blank)或其它預(yù)設(shè)頁面,并處理DocumentComplete事件來獲知前一個(gè)網(wǎng)頁的卸載完成。每當(dāng)導(dǎo)航到一個(gè)地址上,頁面加載完成,都會(huì)產(chǎn)生DocumentComplete事件。因此,只要把頁面導(dǎo)航到一個(gè)空白頁(about:blank)或其它預(yù)設(shè)頁面上,并接收到DocumentComplete事件,即可證明前一頁面已經(jīng)卸載完成。這種方案,一方面可以讓W(xué)ebBrowser充分地卸載,內(nèi)存得以回收,另一方面穩(wěn)定地模擬出卸載完成的事件。
[0075]本實(shí)施例的其它備選方案也可以采用其它方式來確認(rèn)卸載完成。
[0076]本實(shí)施例的一種備選方案中,主進(jìn)程銷毀該Trident標(biāo)簽頁的情況可以包括但不限于:
[0077]關(guān)閉該Trident標(biāo)簽頁;或
[0078]將該Trident標(biāo)簽頁導(dǎo)航到新的頁面(該新的頁面的url既可能是一個(gè)不同于卸載前頁面的url,也可能和卸載前的頁面相同一一比如當(dāng)用戶在瀏覽器上刷新當(dāng)前頁面時(shí))。
[0079]本實(shí)施例的一種備選方案中,所述主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟具體可以包括:
[0080]主進(jìn)程發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給Trident子進(jìn)程,并在該異步消息中攜帶用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù)。
[0081]該備選方案中,Trident子進(jìn)程完成卸載后通知主進(jìn)程的步驟具體可包括:
[0082]Trident子進(jìn)程發(fā)送指示卸載已完成的消息(同步消息或異步消息均可)給主進(jìn)程,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù)。
[0083]該備選方案中,所述步驟S103具體可以包括:
[0084]根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
[0085]在其它備選方案中,主進(jìn)程也可以采用別的方式通知Trident子進(jìn)程卸載Trident標(biāo)簽頁,Trident子進(jìn)程也可以采用別的方式通知主進(jìn)程卸載完畢,比如可以通過設(shè)置和監(jiān)視一特定標(biāo)識(shí)位等方式。另外主進(jìn)程和Trident子進(jìn)程之間也不限于采用發(fā)送第一參數(shù)的方式來確認(rèn)卸載后是關(guān)閉頁面或重新導(dǎo)航,比如主進(jìn)程可以在通知Trident子進(jìn)程卸載前先保存用于指示關(guān)閉頁面或重新導(dǎo)航的信息。
[0086]本實(shí)施例的一種備選方案中,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí),所述主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟中還可以包括:
[0087]所述主進(jìn)程保存導(dǎo)航的各參數(shù);比如可以包括:url (統(tǒng)一資源定位符)地址、referrer (網(wǎng)站來路)引用及title (網(wǎng)頁標(biāo)題);
[0088]步驟S103中具體可以包括:所述主進(jìn)程根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
[0089]下面用一個(gè)具體的例子來說明本實(shí)施例的方法,該例子中主進(jìn)程所要進(jìn)行的操作是導(dǎo)航操作即銷毀當(dāng)前標(biāo)簽頁并導(dǎo)航到新的頁面,關(guān)閉標(biāo)簽頁時(shí)操作類似;如圖2所示,該例子包括下步驟201?206:
[0090]步驟201,判斷需要進(jìn)行導(dǎo)航操作的當(dāng)前標(biāo)簽頁是否為Trident標(biāo)簽頁,當(dāng)當(dāng)前標(biāo)簽頁是Trident標(biāo)簽頁時(shí)觸發(fā)當(dāng)前標(biāo)簽頁的Trdient子進(jìn)程進(jìn)行頁面卸載。
[0091]當(dāng)主進(jìn)程導(dǎo)航到新頁面時(shí),首先需要檢查是否在當(dāng)前標(biāo)簽頁上導(dǎo)航。如果不是在當(dāng)前標(biāo)簽頁上導(dǎo)航,則不需要卸載當(dāng)前標(biāo)簽頁的頁面內(nèi)容,調(diào)用NavigatetoEntry參數(shù),直接走正常流程導(dǎo)航。如果是在當(dāng)前標(biāo)簽頁上導(dǎo)航,則進(jìn)一步檢查當(dāng)前標(biāo)簽頁是否為Trident子進(jìn)程負(fù)責(zé)渲染。如果當(dāng)前標(biāo)簽頁不是Trident子進(jìn)程負(fù)責(zé)渲染,則調(diào)用NavigatetoEntry參數(shù),走正常流程導(dǎo)航;如果是Trident子進(jìn)程負(fù)責(zé)渲染,則需要先觸發(fā)(fire)當(dāng)前標(biāo)簽頁的Trdient子進(jìn)程進(jìn)行頁面卸載,進(jìn)行步驟202。
[0092]步驟202,主進(jìn)程保存導(dǎo)航到新頁面所需的參數(shù)并中斷導(dǎo)航。
[0093]在本例子中導(dǎo)航到新頁面所需的參數(shù)包括NavigationEntry參數(shù)。
[0094]所述NavigationEntry參數(shù)可以是一個(gè)結(jié)構(gòu)體,保存著導(dǎo)航所要使用的各種參數(shù),包括頁面的url地址、referrer引用及title網(wǎng)頁標(biāo)題。
[0095]步驟203,主進(jìn)程發(fā)送異步消息(在本例中為頁面卸載通知)給子進(jìn)程。
[0096]主進(jìn)程與Trident子進(jìn)程件的通信可通過進(jìn)程間通信消息處理模塊(IPCMessageHandle)來實(shí)現(xiàn)。
[0097]所述頁面卸載通知包括ViewMsg_TridentPageUnload消息。
[0098]ViewMsg_TridentPageUnload消息用于通知Trident子進(jìn)程卸載當(dāng)前標(biāo)簽頁,該消息中還可以包含一個(gè)參數(shù)closejab(即前文的第一參數(shù))指示卸載完成后是否關(guān)閉標(biāo)簽頁。本例子中,要在當(dāng)前標(biāo)簽頁上導(dǎo)航時(shí),cl0Se_tab參數(shù)為false;要關(guān)閉當(dāng)前標(biāo)簽頁時(shí),close_tab參數(shù)為true ;其它備選方案中第一參數(shù)及其值的意義的設(shè)置細(xì)節(jié)不限于此。
[0099]步驟204、Trident子進(jìn)程開始卸載當(dāng)前標(biāo)簽頁,導(dǎo)航到空白頁。
[0100]Trident子進(jìn)程收到ViewMsg_TridentPageUnload消息時(shí),開始卸載:先設(shè)定一個(gè)表示頁面卸載的標(biāo)志(page_closing)并設(shè)為特定值,導(dǎo)航到about:blank這個(gè)空白的URL上。在導(dǎo)航過程中,WebBrowser將卸載當(dāng)前標(biāo)簽頁,如果需要,可能會(huì)產(chǎn)生模態(tài)對(duì)話框提示用戶是否卸載。如果彈出模態(tài)對(duì)話框時(shí)用戶選擇了取消卸載,則卸載流程被迫中止,Trident子進(jìn)程取消卸載并通知主進(jìn)程卸載失敗;如果在彈出模態(tài)對(duì)話框時(shí)用戶未取消卸載、或未產(chǎn)生模態(tài)對(duì)話框,則繼續(xù)步驟205。
[0101]步驟205、Trident子進(jìn)程完成卸載后通知主進(jìn)程。
[0102]當(dāng)導(dǎo)航完成,Trident子進(jìn)程接收到DocumentComplete事件,在此判斷當(dāng)前標(biāo)簽頁的URL(統(tǒng)一資源定位符)是否為空白頁(ablout:blank)以及page_closing_標(biāo)志的值是否為所述特定值;如果這兩個(gè)判斷結(jié)果均為是,則模擬UnloadComplete (卸載完成)事件,給主進(jìn)程發(fā)送指示卸載已完成的消息,在本例中為卸載完成通知。
[0103]所述卸載完成通知包括ViewHostMsg_TridentPageUnload_ACK 消息。
[0104]如果page_closing_標(biāo)志的值不等于特定值,說明不是卸載過程(比如可能是用戶主動(dòng)加載空白頁),應(yīng)該走通常收到DocumentComplete事件后正常的流程;如果page_closing_標(biāo)志的值為所述特定值,但URL不是about:blank,說明可能是卸載尚未完成,不應(yīng)做任何動(dòng)作,等待下一次的DocumentComplete事件時(shí)再次判斷當(dāng)前標(biāo)簽頁的URL(統(tǒng)一資源定位符)是否為空白頁(ablout:blank)以及page_closing_標(biāo)志的值是否為所述特定值。
[0105]所述Trident子進(jìn)程還可以在卸載完成或取消卸載時(shí)將所述標(biāo)志的值修改為不等于所述特定值。
[0106]所述ViewHostMsg_TridentPageUnload_ACK消息用于通知主進(jìn)程卸載已經(jīng)完成,該消息中同樣包含所述第一參數(shù)closejab指示卸載完成后是否關(guān)閉當(dāng)前標(biāo)簽頁。本例子中,是要在當(dāng)前標(biāo)簽頁上導(dǎo)航,close_tab參數(shù)為false ;當(dāng)其它例子中是要關(guān)閉當(dāng)前標(biāo)簽頁時(shí),close_tab參數(shù)為true,其它備選方案不限于此。
[0107]步驟206、主進(jìn)程收到Trident子進(jìn)程完成卸載的通知后銷毀當(dāng)前標(biāo)簽頁。
[0108]主進(jìn)程收到ViewHostMsg_TridentPageUnload_ACK 消息后,得知 Trident 子進(jìn)程已經(jīng)完成卸載當(dāng)前標(biāo)簽頁,主進(jìn)程將通過closejab參數(shù)判斷是直接關(guān)閉當(dāng)前標(biāo)簽頁還是繼續(xù)先前的導(dǎo)航。在本例中,closejab參數(shù)為false,因此主進(jìn)程不是直接關(guān)閉當(dāng)前標(biāo)簽頁,而是產(chǎn)生一個(gè)Continue導(dǎo)航的通知,讓瀏覽器獲取步驟202中保存的、先前被中斷的導(dǎo)航的NavigationEntry參數(shù),然后走正常流程繼續(xù)導(dǎo)航。
[0109]在另一個(gè)具體例子中,主進(jìn)程關(guān)閉標(biāo)簽頁時(shí)的過程如圖3所示,包括下面的步驟
301?305。
[0110]步驟301、判斷準(zhǔn)備關(guān)閉的當(dāng)前標(biāo)簽頁是否為Trident子進(jìn)程負(fù)責(zé)渲染,當(dāng)判斷準(zhǔn)備關(guān)閉的當(dāng)前標(biāo)簽頁不是Trident子進(jìn)程負(fù)責(zé)渲染時(shí)直接關(guān)閉當(dāng)前標(biāo)簽頁;如果是Trident子進(jìn)程負(fù)責(zé)渲染,則觸發(fā)當(dāng)前標(biāo)簽頁的Trdient子進(jìn)程進(jìn)行頁面卸載,進(jìn)行步驟
302;[0111]步驟302?304、同上例中的步驟203?205 ;。
[0112]步驟305、主進(jìn)程收到Trident子進(jìn)程完成卸載的通知后銷毀當(dāng)前標(biāo)簽頁。
[0113]主進(jìn)程收到ViewHostMsg_TridentPageUnload_ACK 消息后,得知 Trident 子進(jìn)程已經(jīng)完成卸載當(dāng)前標(biāo)簽頁,主進(jìn)程將通過closejab參數(shù)判斷是直接關(guān)閉當(dāng)前標(biāo)簽頁還是在當(dāng)前標(biāo)簽頁上進(jìn)行導(dǎo)航。在本例中,close_tab參數(shù)為true,主進(jìn)程直接關(guān)閉當(dāng)前標(biāo)簽頁。
[0114]實(shí)施例二,一種瀏覽器,包括:主進(jìn)程模塊和Trident子進(jìn)程模塊;
[0115]所述主進(jìn)程模塊當(dāng)對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁;以及當(dāng)收到所述Trident子進(jìn)程模塊完成卸載的通知后銷毀該Trident標(biāo)簽頁;
[0116]所述Trident子進(jìn)程模塊用于根據(jù)所述主進(jìn)程模塊的通知后卸載Trident標(biāo)簽頁,完成卸載后通知所述主進(jìn)程模塊。
[0117]本實(shí)施例的一種備選方案中,所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁的情況可以但不限于包括:
[0118]關(guān)閉該Trident標(biāo)簽頁;或者
[0119]將該Trident標(biāo)簽頁導(dǎo)航到新的頁面。
[0120]本實(shí)施例的一種備選方案中,所述主進(jìn)程模塊通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁具體可以是指:
[0121]所述主進(jìn)程模塊發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給所述Trident子進(jìn)程模塊,并在該異步消息中攜帶一用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù);
[0122]該備選方案中,所述Trident子進(jìn)程模塊完成卸載后通知主進(jìn)程具體可以是指:
[0123]所述Trident子進(jìn)程模塊發(fā)送指示卸載已完成的消息給所述主進(jìn)程模塊,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù);
[0124]該備選方案中,所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁具體可以是指:
[0125]所述主進(jìn)程模塊根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
[0126]本實(shí)施例的一種備選方案中,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí):
[0127]所述主進(jìn)程模塊在通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁時(shí)還可以保存導(dǎo)航的各參數(shù)并中斷導(dǎo)航;
[0128]所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁具體可以是指:
[0129]所述主進(jìn)程模塊根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
[0130]本實(shí)施例的一種備選方案中,Trident子進(jìn)程模塊卸載Trident標(biāo)簽頁具體可以是指:
[0131]所述Trident子進(jìn)程模塊將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。所述預(yù)定事件包括DocumentComplete 事件。
[0132]本實(shí)施例的一種備選方案中,所述Trident子進(jìn)程模塊將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面前還可以先設(shè)立一標(biāo)志并設(shè)置為特定值,比如置為“I”;在將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面的過程中,如果該Trident標(biāo)簽頁彈出模態(tài)對(duì)話框且用戶選擇取消卸載,則停止卸載;當(dāng)收到預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí),先判斷是否當(dāng)前標(biāo)簽頁的統(tǒng)一資源定位符和所述預(yù)設(shè)頁面的一致且所述標(biāo)志的值為所述特定值,如果是則確定已完成該Trident標(biāo)簽頁的卸載。
[0133]所述Trident子進(jìn)程模塊還可以用于在卸載完成或取消卸載時(shí)將所述標(biāo)志的值修改為不等于所述特定值。
[0134]本實(shí)施例的一種備選方案中,所述預(yù)設(shè)頁面可以但不限于為空白頁,也可以是其它預(yù)設(shè)的、在卸載時(shí)不會(huì)彈出模態(tài)對(duì)話框的頁面。
[0135]本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本申請(qǐng)不限制于任何特定形式的硬件和軟件的結(jié)合。
[0136]當(dāng)然,本申請(qǐng)還可有其他多種實(shí)施例,在不背離本申請(qǐng)精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本申請(qǐng)作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本申請(qǐng)的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種瀏覽器結(jié)束標(biāo)簽頁的方法,其特征在于,包括: 當(dāng)主進(jìn)程對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁; Trident子進(jìn)程卸載該Trident標(biāo)簽頁,Trident子進(jìn)程完成卸載后通知主進(jìn)程; 主進(jìn)程銷毀該Trident標(biāo)簽頁。
2.如權(quán)利要求1所述的方法,其特征在于,主進(jìn)程銷毀該Trident標(biāo)簽頁的情況包括: 關(guān)閉該Trident標(biāo)簽頁;或 將該Trident標(biāo)簽頁上導(dǎo)航到新的頁面。
3.如權(quán)利要求2所述的方法,其特征在于,所述主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟包括: 主進(jìn)程發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給Trident子進(jìn)程,并在該異步消息中攜帶一用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù); 所述Trident子進(jìn)程完成卸載后通知主進(jìn)程的步驟包括: Trident子進(jìn)程發(fā)送指示卸載已完成的消息給主進(jìn)程,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù); 所述主進(jìn)程銷毀該Tride nt標(biāo)簽頁的步驟包括: 根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
4.如權(quán)利要求3所述的方法,其特征在于,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí),所述主進(jìn)程通知Trident子進(jìn)程卸載該Trident標(biāo)簽頁的步驟中還包括: 所述主進(jìn)程保存導(dǎo)航的各參數(shù),中斷導(dǎo)航; 所述主進(jìn)程銷毀該Trident標(biāo)簽頁的操作的步驟包括: 所述主進(jìn)程根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
5.如權(quán)利要求1到4中任一項(xiàng)所述的方法,其特征在于,Trident子進(jìn)程卸載Trident標(biāo)簽頁的步驟包括: Trident子進(jìn)程將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。
6.如權(quán)利要求5所述的方法,其特征在于: 所述預(yù)設(shè)頁面為空白頁。
7.如權(quán)利要求5所述的方法,其特征在于,所述預(yù)定事件包括DocumentComplete事件。
8.如權(quán)利要求1到4中任一項(xiàng)所述的方法,其特征在于,Trident子進(jìn)程卸載Trident標(biāo)簽頁的步驟包括: Trident子進(jìn)程設(shè)立一標(biāo)志并設(shè)為特定值,將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,如果該Trident標(biāo)簽頁彈出模態(tài)對(duì)話框時(shí)取消卸載,則停止卸載; 當(dāng)收到預(yù)設(shè)頁面的文檔完成DocumentComplete事件時(shí),Trident子進(jìn)程判斷是否當(dāng)前標(biāo)簽頁的統(tǒng)一資源定位符和所述預(yù)設(shè)頁面的一致且所述標(biāo)志的值為所述特定值,如果是則確定已完成該Trident標(biāo)簽頁的卸載。
9.一種瀏覽器,包括: 主進(jìn)程模塊和Trident子進(jìn)程模塊;其特征在于: 所述主進(jìn)程模塊當(dāng)對(duì)Trident標(biāo)簽頁進(jìn)行操作的過程中需要結(jié)束該Trident標(biāo)簽頁時(shí),通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁;以及當(dāng)收到所述Trident子進(jìn)程模塊完成卸載的通知后銷毀該Trident標(biāo)簽頁; 所述Trident子進(jìn)程模塊用于根據(jù)所述主進(jìn)程模塊的通知后卸載Trident標(biāo)簽頁,完成卸載后通知所述主進(jìn)程模塊。
10.如權(quán)利要求9所述的瀏覽器,其特征在于,所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁的情況包括: 關(guān)閉該Trident標(biāo)簽頁;或 將該Trident標(biāo)簽頁上重新導(dǎo)航。
11.如權(quán)利要求10所述的瀏覽器,其特征在于,所述主進(jìn)程模塊通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁是指: 所述主進(jìn)程模塊發(fā)送用于指示卸載該Trident標(biāo)簽頁的異步消息給所述Trident子進(jìn)程模塊,并在該異步消息中攜帶一用于指示卸載完成后關(guān)閉該Trident標(biāo)簽頁或重新導(dǎo)航的第一參數(shù); 所述Trident子進(jìn)程模塊完成卸載后通知主進(jìn)程是指: 所述Trident子進(jìn)程模塊.發(fā)送指示卸載已完成的消息給所述主進(jìn)程模塊,并在所述指示卸載已完成的消息中攜帶所述第一參數(shù); 所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁是指: 所述主進(jìn)程模塊根據(jù)所述指示卸載已完成的消息中的第一參數(shù)的值關(guān)閉該Trident標(biāo)簽頁或在該Trident標(biāo)簽頁上導(dǎo)航。
12.如權(quán)利要求11所述的瀏覽器,其特征在于,當(dāng)所述第一參數(shù)的值表示為重新導(dǎo)航時(shí): 所述主進(jìn)程模塊在通知所述Trident子進(jìn)程模塊卸載該Trident標(biāo)簽頁時(shí)還保存導(dǎo)航的各參數(shù)并中斷導(dǎo)航; 所述主進(jìn)程模塊銷毀該Trident標(biāo)簽頁是指: 所述主進(jìn)程模塊根據(jù)所保存的導(dǎo)航的各參數(shù)在該Trident標(biāo)簽頁上繼續(xù)導(dǎo)航到新的頁面。
13.如權(quán)利要求9到12中任一項(xiàng)所述的瀏覽器,其特征在于,Trident子進(jìn)程模塊卸載Trident標(biāo)簽頁是指: 所述Trident子進(jìn)程模塊將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,當(dāng)收到該預(yù)設(shè)頁面的頁面加載觸發(fā)的預(yù)定事件時(shí)確定已完成該Trident標(biāo)簽頁的卸載。
14.如權(quán)利要求13所述的瀏覽器,其特征在于: 所述預(yù)設(shè)頁面為空白頁。
15.如權(quán)利要求13所述的瀏覽器,其特征在于:所述預(yù)定事件包括DocumentComplete事件。
16.如權(quán)利要求9到12中任一項(xiàng)所述的瀏覽器,其特征在于,Trident子進(jìn)程卸載Trident標(biāo)簽頁是指: 所述Trident子進(jìn)程模塊設(shè)立一標(biāo)志并設(shè)為特定值,將該Trident標(biāo)簽頁導(dǎo)航到預(yù)設(shè)頁面,如果該Trident標(biāo)簽頁彈出模態(tài)對(duì)話框時(shí)取消卸載,則停止卸載;當(dāng)收到預(yù)設(shè)頁面的文檔完成DocumentComplete事件時(shí),判斷是否當(dāng)前標(biāo)簽頁的統(tǒng)一資源定位符和所述預(yù)設(shè)頁面的一致且所述標(biāo)志的值為所述特定值,如果是則確定已完成該Trident標(biāo)簽頁的卸載。`
【文檔編號(hào)】G06F9/54GK103793282SQ201210432364
【公開日】2014年5月14日 申請(qǐng)日期:2012年11月2日 優(yōu)先權(quán)日:2012年11月2日
【發(fā)明者】唐紅兵 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司