CN103793282B - 一种浏览器及其结束标签页的方法 - Google Patents
一种浏览器及其结束标签页的方法 Download PDFInfo
- Publication number
- CN103793282B CN103793282B CN201210432364.8A CN201210432364A CN103793282B CN 103793282 B CN103793282 B CN 103793282B CN 201210432364 A CN201210432364 A CN 201210432364A CN 103793282 B CN103793282 B CN 103793282B
- Authority
- CN
- China
- Prior art keywords
- trident
- shipping options
- options pages
- subprocess
- host process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种浏览器及其结束标签页的方法;所述方法包括:当主进程对Trident标签页进行操作的过程中需要结束该Trident标签页时,主进程通知Trident子进程卸载该Trident标签页;Trident子进程卸载该Trident标签页,Trident子进程完成卸载后通知主进程;主进程销毁该Trident标签页。本申请能够避免基于Trident内核的浏览器在结束标签页时僵死的情况。
Description
技术领域
本发明涉及网络领域,具体涉及一种浏览器及其结束标签页的方法。
背景技术
目前许多网页浏览器均采用多进程的双内核架构,比如基于Webkit内核和Trident内核的多进程双核浏览器。
双核浏览器,即有两个内核的浏览器。由于IE浏览器在国内的普及率非常高,所以造成了很多网上银行和支付系统只支持IE的Trident内核,其他浏览器访问根本无法进行正常支付和转账等业务。而WebKit内核的非IE浏览器以更高的性能和更好的用户体验拥有了越来越多的用户。于是双核浏览器应运而生,在不用网上交易的一般网站,使用速度快的WebKit内核访问,这就是所谓的“高速模式”;在访问支付宝或者网上银行的时候,使用Trident内核的“兼容模式”来进行业务。这样一个浏览器多个内核,满足同一用户的不同需求。
Trident一又称为MSHTML,是微软的窗口操作系统(Windows)搭载的网页浏览器一Internet Explorer的排版引擎的名称。
Webkit,是一个开源的浏览器引擎。WebKit的优势在于高效稳定,兼容性好,且源码结构清晰,易于维护。尽管Webkit内核是个非常好的网页解释机制,但是由于微软把IE捆绑在Windows里,导致许多网站都是按照IE来架设的,很多网站不兼容Webkit内核,比如登录界面、网银等网页均不可使用Webkit内核。
多进程双核浏览器的主进程负责主界面及其逻辑,以及对子进程进行管理和通信。每个标签页的网页解析、渲染则由子进程负责。有两种子进程类型:Webkit内核子进程和Trident内核子进程。由于Trident内核的特殊性,Trident内核创建了一个用于呈现网页的WebBrowser(网页浏览器)窗口嵌于主进程的标签页容器窗口内,这种架构导致在关闭标签页时可能引发严重的问题。
当主进程关闭一个标签页(Tab)时,它将调用Windows API(ApplicationProgramming Interface,应用程序编程接口)DestroyWindow(销毁指定窗口的函数)来销毁该标签页的容器窗口及其子窗口。由于Trident内核子进程创建的WebBrowser窗口是该标签页的容器窗口的子窗口,因此,它也将在此过程中被销毁。主进程尝试销毁子进程的子窗口时,需要与子进程通信,DestroyWindow发送WM_DESTROY和WM_NCDESTROY消息给子窗口,并使它变成非激活状态,移除键盘焦点。不幸的是,一些网页在卸载时需要弹出模态对话框来提示用户,比如,弹出“感谢您的访问!”、“确定要离开当前页面吗?”、“请拔掉网银U盾”等等,子进程在标签页关闭时卸载网页并产生了模态对话框,这意谓着UI(User Interface,用户界面)线程被模态对话框阻塞,它无法处理主进程DestroyWindow发送的WM_DESTROY、WM_NCDESTROY消息,主进程的UI线程便一直阻塞、等待这两个消息被处理。同时,子进程弹出模态对话框时也需要与主进程的主窗口进行某些UI上的同步,比如使主窗口变为非激活状态、使主窗口不可用等等,这也意谓着子进程将引发一些消息让主进程处理,但同样不幸的是,主进程的UI线程因为DestroyWindow进程未完成而阻塞。这样,主进程和子进程双方都无法继续,其UI线程均处于阻塞状态,无法响应用户的任何操作,这样就会产生一个界面死锁的严重问题,并最终导致进程崩溃。
使用Trident内核的多进程浏览器理论上都存在这个问题,为了避免这个问题,现有的一种解决方案是可以实现IDocHostShowUI接口,接管ShowMessage(显示信息)方法,在标签页关闭时给子进程作个标记,让它知道在这种情况下不要弹出对话框。通过在ShowMessage中判断标记,并返回信息欺骗Trident内核已经弹出了对话框而达到目的。这样,浏览器在关闭标签页时,应该弹出的提示框被忽略了。
另外,还有一种现有的解决方案是标签页关闭时直接结束标签页的子进程,不给Trident内核正常卸载的机会。这样Trident内核就不可能在网页关闭时弹出模态对话框。
前述第一种方案的缺陷在于:一是ShowMessage方法并不能接管到全部的模态对话框弹出;二是屏蔽了本应该弹出的模态对话框,对用户的使用可能造成影响,没有如实地展现网页编写者的意图;三是某些网站如中国农业银行网站在U盾未拔掉的情况下会一直弹对话框提示,不显示对话框时,用户根本不知道发生了什么事,用户不拔掉U盾,网页就无法卸载,最终进入不断弹对话框的死循环。前述第二种方案直接结束进程很显然不能在多个标签页属于同一进程时进行,否则,关闭一个标签页会导致其它几个属于同一子进程的标签页被关闭。
发明内容
本申请要解决的技术问题是如何避免基于Trident内核的浏览器在结束标签页时僵死的情况。
为了解决上述问题,本申请提供了一种浏览器结束标签页的方法,包括:
当主进程对Trident标签页进行操作的过程中需要结束该Trident标签页时,主进程通知Trident子进程卸载该Trident标签页;
Trident子进程卸载该Trident标签页,Trident子进程完成卸载后通知主进程;
主进程销毁该Trident标签页。
进一步地,主进程销毁该Trident标签页的情况包括:
关闭该Trident标签页;或
将该Trident标签页上导航到新的页面。
进一步地,主进程通知Trident子进程卸载该Trident标签页的步骤包括:
主进程发送用于指示卸载该Trident标签页的异步消息给Trident子进程,并在该异步消息中携带一用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数;
所述Trident子进程完成卸载后通知主进程的步骤包括:
Trident子进程发送指示卸载已完成的消息给主进程,并在所述指示卸载已完成的消息中携带所述第一参数;
所述主进程销毁该Trident标签页的步骤包括:
根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
进一步地,当所述第一参数的值表示为重新导航时,所述主进程通知Trident子进程卸载该Trident标签页的步骤中还包括:
所述主进程保存导航的各参数,中断导航;
所述主进程销毁该Trident标签页的操作的步骤包括:
所述主进程根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
进一步地,Trident子进程卸载Trident标签页的步骤包括:
Trident子进程将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。
进一步地,所述预设页面为空白页。
进一步地,所述预定事件包括DocumentComplete事件。
进一步地,Trident子进程卸载Trident标签页的步骤包括:
Trident子进程设立一标志并设为特定值,将该Trident标签页导航到预设页面,如果该Trident标签页弹出模态对话框时取消卸载,则停止卸载;
当收到预设页面的文档完成DocumentComplete事件时,Trident子进程判断是否当前标签页的统一资源定位符和所述预设页面的一致且所述标志的值为所述特定值,如果是则确定已完成该Trident标签页的卸载。
本申请还提供了一种浏览器,包括:
主进程模块和Trident子进程模块;
所述主进程模块当对Trident标签页进行操作的过程中需要结束该Trident标签页时,通知所述Trident子进程模块卸载该Trident标签页;以及当收到所述Trident子进程模块完成卸载的通知后销毁该Trident标签页;
所述Trident子进程模块用于根据所述主进程模块的通知后卸载Trident标签页,完成卸载后通知所述主进程模块。
进一步地,所述主进程模块销毁该Trident标签页的情况包括:
关闭该Trident标签页;或
将该Trident标签页上重新导航。
进一步地,所述主进程模块通知所述Trident子进程模块卸载该Trident标签页是指:
所述主进程模块发送用于指示卸载该Trident标签页的异步消息给所述Trident子进程模块,并在该异步消息中携带一用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数;
所述Trident子进程模块完成卸载后通知主进程是指:
所述Trident子进程模块发送指示卸载已完成的消息给所述主进程模块,并在所述指示卸载已完成的消息中携带所述第一参数;
所述主进程模块销毁该Trident标签页是指:
所述主进程模块根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
进一步地,当所述第一参数的值表示为重新导航时:
所述主进程模块在通知所述Trident子进程模块卸载该Trident标签页时还保存导航的各参数并中断导航;
所述主进程模块销毁该Trident标签页是指:
所述主进程模块根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
进一步地,Trident子进程模块卸载Trident标签页是指:
所述Trident子进程模块将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。
进一步地,所述预设页面为空白页。
进一步地,所述预定事件包括DocumentComplete事件。
进一步地,Trident子进程卸载Trident标签页是指:
所述Trident子进程模块设立一标志并设为特定值,将该Trident标签页导航到预设页面,如果该Trident标签页弹出模态对话框时取消卸载,则停止卸载;当收到预设页面的文档完成DocumentComplete事件时,判断是否当前标签页的统一资源定位符和所述预设页面的一致且所述标志的值为所述特定值,如果是则确定已完成该Trident标签页的卸载。
本申请的至少一个实施例可以使基于Trident内核的浏览器能避免在结束标签页时进入界面死锁的状态,并可以正常卸载标签页;本申请的又一个实施例在关闭标签页和重新导航的情况下都可以适用;本申请的另一个实施例可正常地展示关闭时的模态对话框,优雅地关闭标签页。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是实施例一的方法流程示意图;
图2是实施例一中具体的Trident标签页上导航流程的示意图;
图3是实施例一中具体的Trident标签页关闭流程的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一,一种浏览器结束标签页的方法,如图1所示,包括下面的步骤S101~S103:
S101、当主进程对Trident标签页进行操作的过程中需要结束该Trident标签页时,主进程通知Trident子进程卸载该Trident标签页;
S102、Trident子进程卸载该Trident标签页,Trident子进程完成卸载后通知主进程;
S103、主进程销毁该Trident标签页。
本技术方案通过完善主进程与子进程关闭标签页的流程,使子进程有机会优雅地卸载来解决上述问题。主进程在关闭标签页时将会先通知Trident子进程卸载当前标签页,而不是直接销毁当前标签页。子进程卸载完成当前标签页后通知主进程,主进程收到卸载完成的通知后才销毁当前标签页。销毁当前标签页的方法可以通过现有技术中的“调用DestroyWindow函数发送WM_DESTROY和WM_NCDESTROY消息给子进程”来实现。所述浏览器结束标签页的方法尤其适用于多进程的浏览器。
本申请实例中的Trident标签页及Trident子进程基于Trident内核启动。
可以看出,由于在主进程调用DestroyWindow函数前,需要结束的标签页实际上已经卸载完成,因此不可能在子进程处理WM DESTROY和WM_NCDESTROY消息期间弹出模态对话框;另外,主进程所调用的Windows API DestroyWindow所发送的上述两个消息均为同步消息,主进程的主线程在这两个消息得到处理前将处于阻塞状态,而上述步骤S101中主进程还没有调用Windows API DestroyWindow(直到步骤S103才调用),在通知子进程卸载后,主进程可以继续进行其它事务的处理,因此即使步骤S102的子进程卸载过程中弹出模态对话框,主进程也能够和子进程进行交互,也就不可能出现背景技术中所提到的死锁情况。本实施例的一种备选方案中,Trident子进程卸载Trident标签页的步骤可以但不限于具体包括:
Trident子进程将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。所述预定事件包括DocumentComplete事件,还可以包括onload事件等。
本实施例的一种备选方案中,所述预设页面可以为但不限于为空白页(about:blank),也可以是其它预设的、在卸载时不会弹出模态对话框的页面。
本实施例的优选方案中,Trident子进程是通过导航到预设页面并通过预设页面的DocumentComplete事件模拟卸载完成事件。在发明本申请的技术方案的过程中,发明人发现Trident子进程的WebBrowser控件卸载完成时没有一个专门表示卸载完成的事件可以利用,因此想到用其它事件来模拟卸载完成事件;最终找到一种巧妙的方案一一通过导航到空白页(about:blank)或其它预设页面,并处理DocumentComplete事件来获知前一个网页的卸载完成。每当导航到一个地址上,页面加载完成,都会产生DocumentComplete事件。因此,只要把页面导航到一个空白页(about:blank)或其它预设页面上,并接收到DocumentComplete事件,即可证明前一页面已经卸载完成。这种方案,一方面可以让WebBrowser充分地卸载,内存得以回收,另一方面稳定地模拟出卸载完成的事件。
本实施例的其它备选方案也可以采用其它方式来确认卸载完成。
本实施例的一种备选方案中,主进程销毁该Trident标签页的情况可以包括但不限于:
关闭该Trident标签页;或
将该Trident标签页导航到新的页面(该新的页面的url既可能是一个不同于卸载前页面的url,也可能和卸载前的页面相同一一比如当用户在浏览器上刷新当前页面时)。
本实施例的一种备选方案中,所述主进程通知Trident子进程卸载该Trident标签页的步骤具体可以包括:
主进程发送用于指示卸载该Trident标签页的异步消息给Trident子进程,并在该异步消息中携带用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数。
该备选方案中,Trident子进程完成卸载后通知主进程的步骤具体可包括:
Trident子进程发送指示卸载已完成的消息(同步消息或异步消息均可)给主进程,并在所述指示卸载已完成的消息中携带所述第一参数。
该备选方案中,所述步骤S103具体可以包括:
根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
在其它备选方案中,主进程也可以采用别的方式通知Trident子进程卸载Trident标签页,Trident子进程也可以采用别的方式通知主进程卸载完毕,比如可以通过设置和监视一特定标识位等方式。另外主进程和Trident子进程之间也不限于采用发送第一参数的方式来确认卸载后是关闭页面或重新导航,比如主进程可以在通知Trident子进程卸载前先保存用于指示关闭页面或重新导航的信息。
本实施例的一种备选方案中,当所述第一参数的值表示为重新导航时,所述主进程通知Trident子进程卸载该Trident标签页的步骤中还可以包括:
所述主进程保存导航的各参数;比如可以包括:url(统一资源定位符)地址、referrer(网站来路)引用及title(网页标题);
步骤S103中具体可以包括:所述主进程根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
下面用一个具体的例子来说明本实施例的方法,该例子中主进程所要进行的操作是导航操作即销毁当前标签页并导航到新的页面,关闭标签页时操作类似;如图2所示,该例子包括下步骤201~206:
步骤201,判断需要进行导航操作的当前标签页是否为Trident标签页,当当前标签页是Trident标签页时触发当前标签页的Trdient子进程进行页面卸载。
当主进程导航到新页面时,首先需要检查是否在当前标签页上导航。如果不是在当前标签页上导航,则不需要卸载当前标签页的页面内容,调用NavigatetoEntry参数,直接走正常流程导航。如果是在当前标签页上导航,则进一步检查当前标签页是否为Trident子进程负责渲染。如果当前标签页不是Trident子进程负责渲染,则调用NavigatetoEntry参数,走正常流程导航;如果是Trident子进程负责渲染,则需要先触发(fire)当前标签页的Trdient子进程进行页面卸载,进行步骤202。
步骤202,主进程保存导航到新页面所需的参数并中断导航。
在本例子中导航到新页面所需的参数包括NavigationEntry参数。
所述NavigationEntry参数可以是一个结构体,保存着导航所要使用的各种参数,包括页面的url地址、referrer引用及title网页标题。
步骤203,主进程发送异步消息(在本例中为页面卸载通知)给子进程。
主进程与Trident子进程件的通信可通过进程间通信消息处理模块(IPCMessageHandle)来实现。
所述页面卸载通知包括ViewMsg_TridentPageUnload消息。
ViewMsg_TridentPageUnload消息用于通知Trident子进程卸载当前标签页,该消息中还可以包含一个参数close_tab(即前文的第一参数)指示卸载完成后是否关闭标签页。本例子中,要在当前标签页上导航时,close_tab参数为false;要关闭当前标签页时,close_tab参数为true;其它备选方案中第一参数及其值的意义的设置细节不限于此。
步骤204、Trident子进程开始卸载当前标签页,导航到空白页。
Trident子进程收到ViewMsg_TridentPageUnload消息时,开始卸载:先设定一个表示页面卸载的标志(page_closing)并设为特定值,导航到about:blank这个空白的URL上。在导航过程中,WebBrowser将卸载当前标签页,如果需要,可能会产生模态对话框提示用户是否卸载。如果弹出模态对话框时用户选择了取消卸载,则卸载流程被迫中止,Trident子进程取消卸载并通知主进程卸载失败;如果在弹出模态对话框时用户未取消卸载、或未产生模态对话框,则继续步骤205。
步骤205、Trident子进程完成卸载后通知主进程。
当导航完成,Trident子进程接收到DocumentComplete事件,在此判断当前标签页的URL(统一资源定位符)是否为空白页(ablout:blank)以及page_closing_标志的值是否为所述特定值;如果这两个判断结果均为是,则模拟UnloadComplete(卸载完成)事件,给主进程发送指示卸载已完成的消息,在本例中为卸载完成通知。
所述卸载完成通知包括ViewHostMsg_TridentPageUnload_ACK消息。
如果page_closing_标志的值不等于特定值,说明不是卸载过程(比如可能是用户主动加载空白页),应该走通常收到DocumentComplete事件后正常的流程;如果page_closing_标志的值为所述特定值,但URL不是about:blank,说明可能是卸载尚未完成,不应做任何动作,等待下一次的DocumentComplete事件时再次判断当前标签页的URL(统一资源定位符)是否为空白页(ablout:blank)以及page_closing_标志的值是否为所述特定值。
所述Trident子进程还可以在卸载完成或取消卸载时将所述标志的值修改为不等于所述特定值。
所述ViewHostMsg_TridentPageUnload_ACK消息用于通知主进程卸载已经完成,该消息中同样包含所述第一参数close_tab指示卸载完成后是否关闭当前标签页。本例子中,是要在当前标签页上导航,close_tab参数为false;当其它例子中是要关闭当前标签页时,close_tab参数为true,其它备选方案不限于此。
步骤206、主进程收到Trident子进程完成卸载的通知后销毁当前标签页。
主进程收到ViewHostMsg_TridentPageUnload_ACK消息后,得知Trident子进程已经完成卸载当前标签页,主进程将通过close_tab参数判断是直接关闭当前标签页还是继续先前的导航。在本例中,close_tab参数为false,因此主进程不是直接关闭当前标签页,而是产生一个Continue导航的通知,让浏览器获取步骤202中保存的、先前被中断的导航的NavigationEntry参数,然后走正常流程继续导航。
在另一个具体例子中,主进程关闭标签页时的过程如图3所示,包括下面的步骤301~305。
步骤301、判断准备关闭的当前标签页是否为Trident子进程负责渲染,当判断准备关闭的当前标签页不是Trident子进程负责渲染时直接关闭当前标签页;如果是Trident子进程负责渲染,则触发当前标签页的Trdient子进程进行页面卸载,进行步骤302;
步骤302~304、同上例中的步骤203~205;。
步骤305、主进程收到Trident子进程完成卸载的通知后销毁当前标签页。
主进程收到ViewHostMsg_TridentPageUnload_ACK消息后,得知Trident子进程已经完成卸载当前标签页,主进程将通过close_tab参数判断是直接关闭当前标签页还是在当前标签页上进行导航。在本例中,close_tab参数为true,主进程直接关闭当前标签页。
实施例二,一种浏览器,包括:主进程模块和Trident子进程模块;
所述主进程模块当对Trident标签页进行操作的过程中需要结束该Trident标签页时,通知所述Trident子进程模块卸载该Trident标签页;以及当收到所述Trident子进程模块完成卸载的通知后销毁该Trident标签页;
所述Trident子进程模块用于根据所述主进程模块的通知后卸载Trident标签页,完成卸载后通知所述主进程模块。
本实施例的一种备选方案中,所述主进程模块销毁该Trident标签页的情况可以但不限于包括:
关闭该Trident标签页;或者
将该Trident标签页导航到新的页面。
本实施例的一种备选方案中,所述主进程模块通知所述Trident子进程模块卸载该Trident标签页具体可以是指:
所述主进程模块发送用于指示卸载该Trident标签页的异步消息给所述Trident子进程模块,并在该异步消息中携带一用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数;
该备选方案中,所述Trident子进程模块完成卸载后通知主进程具体可以是指:
所述Trident子进程模块发送指示卸载已完成的消息给所述主进程模块,并在所述指示卸载已完成的消息中携带所述第一参数;
该备选方案中,所述主进程模块销毁该Trident标签页具体可以是指:
所述主进程模块根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
本实施例的一种备选方案中,当所述第一参数的值表示为重新导航时:
所述主进程模块在通知Trident子进程卸载该Trident标签页时还可以保存导航的各参数并中断导航;
所述主进程模块销毁该Trident标签页具体可以是指:
所述主进程模块根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
本实施例的一种备选方案中,Trident子进程模块卸载Trident标签页具体可以是指:
所述Trident子进程模块将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。所述预定事件包括DocumentComplete事件。
本实施例的一种备选方案中,所述Trident子进程模块将该Trident标签页导航到预设页面前还可以先设立一标志并设置为特定值,比如置为“1”;在将该Trident标签页导航到预设页面的过程中,如果该Trident标签页弹出模态对话框且用户选择取消卸载,则停止卸载;当收到预设页面的页面加载触发的预定事件时,先判断是否当前标签页的统一资源定位符和所述预设页面的一致且所述标志的值为所述特定值,如果是则确定已完成该Trident标签页的卸载。
所述Trident子进程模块还可以用于在卸载完成或取消卸载时将所述标志的值修改为不等于所述特定值。
本实施例的一种备选方案中,所述预设页面可以但不限于为空白页,也可以是其它预设的、在卸载时不会弹出模态对话框的页面。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (16)
1.一种浏览器结束标签页的方法,其特征在于,包括:
当主进程对Trident标签页进行操作的过程中需要结束该Trident标签页时,主进程通知Trident子进程卸载该Trident标签页;
Trident子进程卸载该Trident标签页,Trident子进程完成卸载后通知主进程;
主进程收到所述Trident子进程完成卸载的通知后,销毁该Trident标签页。
2.如权利要求1所述的方法,其特征在于,主进程销毁该Trident标签页的情况包括:
关闭该Trident标签页;或
将该Trident标签页上导航到新的页面。
3.如权利要求2所述的方法,其特征在于,所述主进程通知Trident子进程卸载该Trident标签页的步骤包括:
主进程发送用于指示卸载该Trident标签页的异步消息给Trident子进程,并在该异步消息中携带一用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数;
所述Trident子进程完成卸载后通知主进程的步骤包括:
Trident子进程发送指示卸载已完成的消息给主进程,并在所述指示卸载已完成的消息中携带所述第一参数;
所述主进程销毁该Trident标签页的步骤包括:
根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
4.如权利要求3所述的方法,其特征在于,当所述第一参数的值表示为重新导航时,所述主进程通知Trident子进程卸载该Trident标签页的步骤中还包括:
所述主进程保存导航的各参数,中断导航;
所述主进程销毁该Trident标签页的操作的步骤包括:
所述主进程根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
5.如权利要求1到4中任一项所述的方法,其特征在于,Trident子进程卸载Trident标签页的步骤包括:
Trident子进程将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。
6.如权利要求5所述的方法,其特征在于:
所述预设页面为空白页。
7.如权利要求5所述的方法,其特征在于,所述预定事件包括DocumentComplete事件。
8.如权利要求1到4中任一项所述的方法,其特征在于,Trident子进程卸载Trident标签页的步骤包括:
Trident子进程设立一标志并设为特定值,将该Trident标签页导航到预设页面,如果该Trident标签页弹出模态对话框时取消卸载,则停止卸载;
当收到预设页面的文档完成DocumentComplete事件时,Trident子进程判断是否当前标签页的统一资源定位符和所述预设页面的一致且所述标志的值为所述特定值,如果是则确定已完成该Trident标签页的卸载。
9.一种浏览器,包括:
主进程模块和Trident子进程模块;
其特征在于:
所述主进程模块当对Trident标签页进行操作的过程中需要结束该Trident标签页时,通知所述Trident子进程模块卸载该Trident标签页;以及当收到所述Trident子进程模块完成卸载的通知后销毁该Trident标签页;
所述Trident子进程模块用于根据所述主进程模块的通知后卸载Trident标签页,完成卸载后通知所述主进程模块。
10.如权利要求9所述的浏览器,其特征在于,所述主进程模块销毁该Trident标签页的情况包括:
关闭该Trident标签页;或
将该Trident标签页上重新导航。
11.如权利要求10所述的浏览器,其特征在于,所述主进程模块通知所述Trident子进程模块卸载该Trident标签页是指:
所述主进程模块发送用于指示卸载该Trident标签页的异步消息给所述Trident子进程模块,并在该异步消息中携带一用于指示卸载完成后关闭该Trident标签页或重新导航的第一参数;
所述Trident子进程模块完成卸载后通知主进程是指:
所述Trident子进程模块发送指示卸载已完成的消息给所述主进程模块,并在所述指示卸载已完成的消息中携带所述第一参数;
所述主进程模块销毁该Trident标签页是指:
所述主进程模块根据所述指示卸载已完成的消息中的第一参数的值关闭该Trident标签页或在该Trident标签页上导航。
12.如权利要求11所述的浏览器,其特征在于,当所述第一参数的值表示为重新导航时:
所述主进程模块在通知所述Trident子进程模块卸载该Trident标签页时还保存导航的各参数并中断导航;
所述主进程模块销毁该Trident标签页是指:
所述主进程模块根据所保存的导航的各参数在该Trident标签页上继续导航到新的页面。
13.如权利要求9到12中任一项所述的浏览器,其特征在于,Trident子进程模块卸载Trident标签页是指:
所述Trident子进程模块将该Trident标签页导航到预设页面,当收到该预设页面的页面加载触发的预定事件时确定已完成该Trident标签页的卸载。
14.如权利要求13所述的浏览器,其特征在于:
所述预设页面为空白页。
15.如权利要求13所述的浏览器,其特征在于:所述预定事件包括DocumentComplete事件。
16.如权利要求9到12中任一项所述的浏览器,其特征在于,Trident子进程卸载Trident标签页是指:
所述Trident子进程模块设立一标志并设为特定值,将该Trident标签页导航到预设页面,如果该Trident标签页弹出模态对话框时取消卸载,则停止卸载;当收到预设页面的文档完成DocumentComplete事件时,判断是否当前标签页的统一资源定位符和所述预设页面的一致且所述标志的值为所述特定值,如果是则确定已完成该Trident标签页的卸载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210432364.8A CN103793282B (zh) | 2012-11-02 | 2012-11-02 | 一种浏览器及其结束标签页的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210432364.8A CN103793282B (zh) | 2012-11-02 | 2012-11-02 | 一种浏览器及其结束标签页的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103793282A CN103793282A (zh) | 2014-05-14 |
CN103793282B true CN103793282B (zh) | 2017-08-18 |
Family
ID=50668992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210432364.8A Active CN103793282B (zh) | 2012-11-02 | 2012-11-02 | 一种浏览器及其结束标签页的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793282B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063488B (zh) * | 2014-07-07 | 2017-09-01 | 成都安恒信息技术有限公司 | 一种半自动化学习式的表单特征提取方法 |
CN109117216A (zh) * | 2018-06-22 | 2019-01-01 | 北京明华联盟科技有限公司 | 浏览器弹窗创建方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102027454A (zh) * | 2008-05-13 | 2011-04-20 | 谷歌公司 | 多进程浏览器体系结构 |
CN102197366A (zh) * | 2008-10-27 | 2011-09-21 | 微软公司 | 子窗口显露和管理 |
CN102663318A (zh) * | 2012-03-22 | 2012-09-12 | 百度在线网络技术(北京)有限公司 | 浏览器及客户端 |
CN102681850A (zh) * | 2012-05-07 | 2012-09-19 | 奇智软件(北京)有限公司 | 一种基于Webkit 内核提供网页浏览的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101651524B1 (ko) * | 2008-09-01 | 2016-08-26 | 구글 인코포레이티드 | 브라우저의 새로운 탭 페이지 및 북마크 툴바 |
-
2012
- 2012-11-02 CN CN201210432364.8A patent/CN103793282B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102027454A (zh) * | 2008-05-13 | 2011-04-20 | 谷歌公司 | 多进程浏览器体系结构 |
CN102197366A (zh) * | 2008-10-27 | 2011-09-21 | 微软公司 | 子窗口显露和管理 |
CN102663318A (zh) * | 2012-03-22 | 2012-09-12 | 百度在线网络技术(北京)有限公司 | 浏览器及客户端 |
CN102681850A (zh) * | 2012-05-07 | 2012-09-19 | 奇智软件(北京)有限公司 | 一种基于Webkit 内核提供网页浏览的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103793282A (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402817B1 (en) | Relaxed fraud detection for transactions using virtual transaction cards | |
KR101691117B1 (ko) | 웹 애플리케이션을 위한 보안 데이터 컨테이너 | |
US7945802B2 (en) | Modifying time progression rates in a virtual universe | |
CN107330768B (zh) | 个性化素材展示控制方法、装置和系统 | |
CN103546388B (zh) | 一种流量控制方法及装置 | |
CN104503783B (zh) | 一种呈现服务器硬件初始化程度的方法及服务器 | |
CN110188275A (zh) | 一种网页元素的浏览监控方法、装置、设备和存储介质 | |
US20210146260A1 (en) | Method, apparatus, computer program and recording medium for providing game service | |
CN106096030A (zh) | 对浏览器运行进行优化的方法和装置 | |
CN103703454A (zh) | 按需的标签再水化 | |
KR101770402B1 (ko) | 팝업 컨텐츠 압축 표시 장치, 방법 및 컴퓨터 프로그램 | |
US20170300204A1 (en) | Method and apparatus for manufacturing interactive electronic manual | |
CN106648666A (zh) | 一种用户界面生成方法及系统 | |
CN104915461A (zh) | 页面展示方法和装置 | |
CN103793282B (zh) | 一种浏览器及其结束标签页的方法 | |
CN113672757B (zh) | 一种音频播放方法及装置 | |
CN107885754A (zh) | 基于lda模型从交易数据中提取信用变量的方法和装置 | |
JP4993146B2 (ja) | フレームバッファに記憶された望まれないコンテンツの表示を阻止するためのシステム、方法、及びコンピュータプログラム | |
US9201687B2 (en) | User interface for process relationship management | |
CN102929802B (zh) | 一种存储资源的保护方法及系统 | |
CN107122315A (zh) | 一种访问控制方法及终端 | |
CN102681751B (zh) | 输入控制方法、输入识别方法及设备 | |
CN104021168B (zh) | 一种浏览网页的方法及装置 | |
CN110471744A (zh) | 密码修改方法、装置、设备和计算机可读存储介质 | |
CN104021167A (zh) | 一种浏览网页的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1194511 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1194511 Country of ref document: HK |