[发明专利]一种浏览器及其结束标签页的方法有效
申请号: | 201210432364.8 | 申请日: | 2012-11-02 |
公开(公告)号: | CN103793282B | 公开(公告)日: | 2017-08-18 |
发明(设计)人: | 唐红兵 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F11/00 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 栗若木 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 浏览器 及其 结束 标签 方法 | ||
技术领域
本发明涉及网络领域,具体涉及一种浏览器及其结束标签页的方法。
背景技术
目前许多网页浏览器均采用多进程的双内核架构,比如基于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内核就不可能在网页关闭时弹出模态对话框。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210432364.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种软件看门狗系统及方法
- 下一篇:一种日期区间的确定系统和方法