《一种浏览器中进程间通信的方法、装置和浏览器.pdf》由会员分享,可在线阅读,更多相关《一种浏览器中进程间通信的方法、装置和浏览器.pdf(18页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103544068 A (43)申请公布日 2014.01.29 CN 103544068 A (21)申请号 201310493264.0 (22)申请日 2013.10.18 G06F 9/54(2006.01) G06F 17/30(2006.01) (71)申请人 北京奇虎科技有限公司 地址 100088 北京市西城区新街口外大街 28 号 D 座 112 室 (德胜园区) 申请人 奇智软件 (北京) 有限公司 (72)发明人 宗小斌 任寰 (74)专利代理机构 北京润泽恒知识产权代理有 限公司 11319 代理人 赵娟 (54) 发明名称 一种浏览器中进程间。
2、通信的方法、 装置和浏 览器 (57) 摘要 本发明公开了一种浏览器中进程间通信的方 法、 装置以及浏览器, 所述方法包括 : 采用所述第 一浏览器内核进程判定当前网页适于采用第二浏 览器内核进程加载 ; 采用所述第一浏览器内核进 程接收触发当前网页加载的操作指令 ; 通过所述 第一I/O线程将所述操作指令发送至所述第二I/ O线程中 ; 采用所述第二I/O线程将所述操作指令 发送至当前网页对应的标签页面子线程中 ; 采用 所述标签页面子线程按照所述操作指令对当前网 页进行渲染 ; 通过所述第二 I/O 线程将渲染后的 网页发送至所述第一 I/O 线程中 ; 采用所述第一 浏览器内核进程对渲染。
3、后的网页进行显示。本发 明提高了网页的加载速度和效率。 (51)Int.Cl. 权利要求书 2 页 说明书 14 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书14页 附图1页 (10)申请公布号 CN 103544068 A CN 103544068 A 1/2 页 2 1. 一种浏览器中进程间通信的方法, 所述浏览器包括第一浏览器内核进程和第二浏览 器内核进程, 所述第一浏览器内核进程包括第一 I/O 线程, 所述第二浏览器内核进程包括 第二 I/O 线程和窗口线程, 所述窗口线程包括一个或多个标签页面子线程, 所述方法包括 : 采用所。
4、述第一浏览器内核进程判定当前网页适于采用第二浏览器内核进程加载 ; 采用所述第一浏览器内核进程接收触发当前网页加载的操作指令 ; 通过所述第一 I/O 线程将所述操作指令发送至所述第二 I/O 线程中 ; 采用所述第二 I/O 线程将所述操作指令发送至当前网页对应的标签页面子线程中 ; 采用所述标签页面子线程按照所述操作指令对当前网页进行渲染 ; 通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 采用所述第一浏览器内核进程对渲染后的网页进行显示。 2. 如权利要求 1 所述的方法, 其特征在于, 所述采用所述第一浏览器内核进程接收触 发当前网页加载的操作指令的步骤包括。
5、 : 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 3. 如权利要求 1 所述的方法, 其特征在于, 所述操作指令中包括第二浏览器内核进程 标识和标签页面子线程标识 ; 所述采用所述第二 I/O 线程将所述操作指令发送至当前网页对应的标签页面子线程 中的步骤包括 : 提取所述操作指令中的第二浏览器内核进程标识和标签页面子线程标识 ; 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至所述第二浏览 器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 4. 如权利要求 1 所述的方法, 其特征在于, 所述采用所述第一浏览器内核进程判定当 前网页适于采用第二浏。
6、览器内核进程加载的步骤 : 在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹配的浏览器内核 进程 ; 当查找到时, 判定匹配的浏览器内核进程为第二浏览器内核进程。 5. 如权利要求 4 所述的方法, 其特征在于, 所述在所述第一浏览器内核进程中采用当 前网页的 URL 查找当前网页匹配的浏览器内核的步骤包括 : 在预置的白名单中查找与当前网页的 URL 适配的浏览器内核进程 ; 和 / 或, 在预置的黑名单中查找与当前网页的 URL 不适配的浏览器内核进程。 6. 一种浏览器中进程间通信的装置, 所述浏览器包括第一浏览器内核进程和第二浏览 器内核进程, 所述第一浏览器内核进程包。
7、括第一 I/O 线程, 所述第二浏览器内核进程包括 第二 I/O 线程和窗口线程, 所述窗口线程包括一个或多个标签页面子线程, 所述装置包括 : 适配内核判定模块, 适于采用所述第一浏览器内核进程判定当前网页适于采用第二浏 览器内核进程加载 ; 操作指令接收模块, 适于采用所述第一浏览器内核进程接收触发当前网页加载的操作 指令 ; 第一操作指令发送模块, 适于通过所述第一 I/O 线程将所述操作指令发送至所述第二 I/O 线程中 ; 权 利 要 求 书 CN 103544068 A 2 2/2 页 3 第二操作指令发送模块, 适于采用所述第二 I/O 线程将所述操作指令发送至当前网页 对应的标。
8、签页面子线程中 ; 渲染模块, 适于采用所述标签页面子线程按照所述操作指令对当前网页进行渲染 ; 网页发送模块, 适于通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程 中 ; 网页显示模块, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 7. 如权利要求 6 所述的装置, 其特征在于, 所述操作指令接收模块还适于 : 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 8. 如权利要求 6 所述的装置, 其特征在于, 所述操作指令中包括第二浏览器内核进程 标识和标签页面子线程标识 ; 所述第二操作指令发送模块还适于 : 提取所述操作指令中的第二浏览器内核。
9、进程标识和标签页面子线程标识 ; 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至所述第二浏览 器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 9. 如权利要求 6 所述的装置, 其特征在于, 所述适配内核判定模块还适于 : 在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹配的浏览器内核 进程 ; 当查找到时, 判定匹配的浏览器内核为第二浏览器内核进程。 10. 一种浏览器, 所述浏览器包括第一浏览器内核进程和第二浏览器内核进程, 所述第 一浏览器内核进程包括第一 I/O 线程, 所述第二浏览器内核进程包括第二 I/O 线程和窗口 线程, 所述窗口。
10、线程包括一个或多个标签页面子线程, 所述浏览器包括 : 适配内核判定模块, 适于采用所述第一浏览器内核进程判定当前网页适于采用第二浏 览器内核进程加载 ; 操作指令接收模块, 适于采用所述第一浏览器内核进程接收触发当前网页加载的操作 指令 ; 第一操作指令发送模块, 适于通过所述第一 I/O 线程将所述操作指令发送至所述第二 I/O 线程中 ; 第二操作指令发送模块, 适于采用所述第二 I/O 线程将所述操作指令发送至当前网页 对应的标签页面子线程中 ; 渲染模块, 适于采用所述标签页面子线程按照所述操作指令对当前网页进行渲染 ; 网页发送模块, 适于通过所述第二 I/O 线程将渲染后的网页发。
11、送至所述第一 I/O 线程 中 ; 网页显示模块, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 权 利 要 求 书 CN 103544068 A 3 1/14 页 4 一种浏览器中进程间通信的方法、 装置和浏览器 技术领域 0001 本发明涉及浏览器的技术领域, 特别是涉及一种浏览器中进程间通信的方法、 一 种浏览器中进程间通信的装置和一种浏览器。 背景技术 0002 浏览器从架构上可以分为两个部分, 即内核和外壳。浏览器内核是指浏览器的 核心部分, 可以分成两部分 : 渲染引擎 (layout engineer 或者 Rendering Engine) 和 JS (JavaScr。
12、ipt) 引擎。渲染引擎主要负责取得网页的内容 (包括 HTML、 XML、 图像等) 、 整理信 息 (如加入 CSS(Cascading Style Sheets, 层叠样式表单) 等) , 以及计算网页的显示方式, 然后会输出至显示器或打印机。浏览器内核的不同对于网页的语法解释会有不同, 所以渲 染的效果也不相同。 所有网页浏览器、 电子邮件客户端以及其它需要编辑、 显示网络内容的 应用程序都需要内核。JS 引擎则是解析 Javascript 语言, 执行 Javascript 语言来实现网 页的动态效果。 0003 浏览器内核的种类有很多, 目前比较常见的浏览器内核有微软的 IE 浏览。
13、器使用 的 Trident 内核, Firefox 浏览器使用的 Gecko 内核, 苹果的 Safari 浏览器和 Google 的 Chrome 浏览器使用的 Webkit 内核, 以及, Opera 浏览器采用的 Presto 内核。 0004 当用户通过浏览器发起一个浏览网页的请求时, 浏览器通过内核从目标网站下载 网页的内容, 然后分析网页内容, 执行脚本, 计算排版, 最后输出到显示器显示给用户。 每个 浏览器具有一个内核, 不管用户通过一个浏览器进程打开多少个网页, 浏览器都使用同一 个内核解释执行。 0005 但是, 这种单内核浏览器有很大的局限性, 因为网页往往是按照某个内核。
14、支持的 网络标准制作的, 对于某个特定内核支持的网络标准, 其他内核可能无法很好地支持 (甚至 无法支持) 。例如, 用户使用 Firefox 浏览器浏览网页, Firefox 浏览器的内核能够很好地 支持 W3C 标准, 因此使用该浏览器可以浏览按照 W3C 标准制作的网页。但如果用户想要浏 览招商银行网页使用网络银行, Firefox 浏览器就无法满足这个用户需求。因为招商银行 网站的网络银行功能需要 ActiveX 插件功能, 而该功能可能只有 IE 的内核才能支持, 这样 用户在使用 Firefox 浏览器的情况下就无法使用招商银行的网络银行功能了。 发明内容 0006 鉴于上述问题,。
15、 提出了本发明以便提供一种克服上述问题或者至少部分地解决上 述问题的一种进行网页加载的方法和相应的一种进行网页加载的装置, 以及一种浏览器。 0007 依据本发明的一个方面, 提供了一种浏览器中进程间通信的方法, 所述浏览器包 括第一浏览器内核进程和第二浏览器内核进程, 所述第一浏览器内核进程包括第一 I/O 线 程, 所述第二浏览器内核进程包括第二 I/O 线程和窗口线程, 所述窗口线程包括一个或多 个标签页面子线程, 所述方法包括 : 0008 采用所述第一浏览器内核进程判定当前网页适于采用第二浏览器内核进程加 说 明 书 CN 103544068 A 4 2/14 页 5 载 ; 000。
16、9 采用所述第一浏览器内核进程接收触发当前网页加载的操作指令 ; 0010 通过所述第一 I/O 线程将所述操作指令发送至所述第二 I/O 线程中 ; 0011 采用所述第二 I/O 线程将所述操作指令发送至当前网页对应的标签页面子线程 中 ; 0012 采用所述标签页面子线程按照所述操作指令对当前网页进行渲染 ; 0013 通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 0014 采用所述第一浏览器内核进程对渲染后的网页进行显示。 0015 可选地, 所述采用所述第一浏览器内核进程接收触发当前网页加载的操作指令的 步骤包括 : 0016 采用所述第一 I/O 线程。
17、接收到触发当前网页加载的操作指令。 0017 可选地, 所述操作指令中包括第二浏览器内核进程标识和标签页面子线程标识 ; 0018 所述采用所述第二 I/O 线程将所述操作指令发送至当前网页对应的标签页面子 线程中的步骤包括 : 0019 提取所述操作指令中的第二浏览器内核进程标识和标签页面子线程标识 ; 0020 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至所述第二 浏览器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 0021 可选地, 所述采用所述第一浏览器内核进程判定当前网页适于采用第二浏览器内 核进程加载的步骤 : 0022 在所述第一浏览器内核进程中。
18、采用当前网页的 URL 查找当前网页匹配的浏览器 内核进程 ; 0023 当查找到时, 判定匹配的浏览器内核进程为第二浏览器内核进程。 0024 可选地, 所述在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹 配的浏览器内核的步骤包括 : 0025 在预置的白名单中查找与当前网页的 URL 适配的浏览器内核进程 ; 0026 和 / 或, 0027 在预置的黑名单中查找与当前网页的 URL 不适配的浏览器内核进程。 0028 根据本发明的另一方面, 提供了一种浏览器中进程间通信的装置, 所述浏览器包 括第一浏览器内核进程和第二浏览器内核进程, 所述第一浏览器内核进程包括第一 I。
19、/O 线 程, 所述第二浏览器内核进程包括第二 I/O 线程和窗口线程, 所述窗口线程包括一个或多 个标签页面子线程, 所述装置包括 : 0029 适配内核判定模块, 适于采用所述第一浏览器内核进程判定当前网页适于采用第 二浏览器内核进程加载 ; 0030 操作指令接收模块, 适于采用所述第一浏览器内核进程接收触发当前网页加载的 操作指令 ; 0031 第一操作指令发送模块, 适于通过所述第一 I/O 线程将所述操作指令发送至所述 第二 I/O 线程中 ; 0032 第二操作指令发送模块, 适于采用所述第二 I/O 线程将所述操作指令发送至当前 网页对应的标签页面子线程中 ; 说 明 书 CN。
20、 103544068 A 5 3/14 页 6 0033 渲染模块, 适于采用所述标签页面子线程按照所述操作指令对当前网页进行渲 染 ; 0034 网页发送模块, 适于通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 0035 网页显示模块, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 0036 可选地, 所述操作指令接收模块还适于 : 0037 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 0038 可选地, 所述操作指令中包括第二浏览器内核进程标识和标签页面子线程标识 ; 0039 所述第二操作指令发送模块还适于 : 0040 提取所述。
21、操作指令中的第二浏览器内核进程标识和标签页面子线程标识 ; 0041 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至所述第二 浏览器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 0042 可选地, 所述适配内核判定模块还适于 : 0043 在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹配的浏览器 内核进程 ; 0044 当查找到时, 判定匹配的浏览器内核为第二浏览器内核进程。 0045 可选地, 所述适配内核判定模块还适于 : 0046 在预置的白名单中查找与当前网页的 URL 适配的浏览器内核进程 ; 0047 和 / 或, 0048 在预置。
22、的黑名单中查找与当前网页的 URL 不适配的浏览器内核进程。 0049 根据本发明的另一方面, 提供了一种浏览器, 所述浏览器包括第一浏览器内核进 程和第二浏览器内核进程, 所述第一浏览器内核进程包括第一 I/O 线程, 所述第二浏览器 内核进程包括第二 I/O 线程和窗口线程, 所述窗口线程包括一个或多个标签页面子线程, 所述浏览器包括 : 0050 适配内核判定模块, 适于采用所述第一浏览器内核进程判定当前网页适于采用第 二浏览器内核进程加载 ; 0051 操作指令接收模块, 适于采用所述第一浏览器内核进程接收触发当前网页加载的 操作指令 ; 0052 第一操作指令发送模块, 适于通过所述。
23、第一 I/O 线程将所述操作指令发送至所述 第二 I/O 线程中 ; 0053 第二操作指令发送模块, 适于采用所述第二 I/O 线程将所述操作指令发送至当前 网页对应的标签页面子线程中 ; 0054 渲染模块, 适于采用所述标签页面子线程按照所述操作指令对当前网页进行渲 染 ; 0055 网页发送模块, 适于通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 0056 网页显示模块, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 0057 本发明可以在判定当前网页适于采用第二浏览器内核进程加载时, 使得浏览器的 两个浏览器内核进程进行切换, 可以使用第一浏览。
24、器内核进程的操作指令可以准确而高效 说 明 书 CN 103544068 A 6 4/14 页 7 地转达到指定的网页的标签页面子线程中进行, 实现网页的正常渲染和加载, 返回第一浏 览器内核进程中进行显示, 提高了网页的加载速度和效率。 0058 上述说明仅是本发明技术方案的概述, 为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施, 并且为了让本发明的上述和其它目的、 特征和优点能够 更明显易懂, 以下特举本发明的具体实施方式。 附图说明 0059 通过阅读下文优选实施方式的详细描述, 各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的。
25、目的, 而并不认为是对本发明 的限制。而且在整个附图中, 用相同的参考符号表示相同的部件。在附图中 : 0060 图 1 示出了根据本发明一个实施例的一种浏览器中进程间通信的方法实施例的 步骤流程图 ; 以及, 0061 图 2 示出了根据本发明一个实施例的一种浏览器中进程间通信的装置实施例的 结构框图。 具体实施方式 0062 下面将参照附图更详细地描述本公开的示例性实施例。 虽然附图中显示了本公开 的示例性实施例, 然而应当理解, 可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。 相反, 提供这些实施例是为了能够更透彻地理解本公开, 并且能够将本公开的范围 完整的传达给本领域的技。
26、术人员。 0063 参照图 1, 示出了根据本发明一个实施例的一种浏览器中进程间通信的方法实施 例的步骤流程图, 其中, 所述浏览器可以包括第一浏览器内核进程和第二浏览器内核进程, 所述第一浏览器内核进程可以包括第一 I/O(input/output, 输入 / 输出) 线程, 所述第二 浏览器内核进程包括可以第二 I/O 线程、 I/O 信息分发线程和窗口线程, 所述窗口线程可以 包括一个或多个标签页面子线程, 具体可以包括以下步骤 : 0064 步骤 101, 采用所述第一浏览器内核进程判定当前网页适于采用第二浏览器内核 进程加载 ; 0065 需要说明的是, 浏览器可以包括两个或两个以上。
27、的浏览器内核, 第一浏览器内核 可以为浏览器当前默认使用的浏览器内核, 该默认的浏览器内核可以是系统设置的, 也可 以使用户设置的, 具体可以是 Webkit 内核等高性能的浏览器内核。当然, 还可以是 Gecko 内核、 Presto 内核等等, 本发明实施例对此不加以限制。 0066 第二浏览器内核可以为浏览器内置的除第一浏览器内核外的其他浏览器内核, 可 以在某些情况适配当前网页的加载, 可以为Trident内核 (即IE内核) , 包括IE-com内核 (兼 容的 IE 内核) 和 / 或 IE-stand 内核。当然, 还可以是 Gecko 内核、 Presto 内核等等, 本发 明。
28、实施例对此不加以限制。 0067 进程 (Process) 是操作系统结构的基础, 可以是一个正在执行的程序 ; 可以是计 算机中正在运行的程序实例 ; 可以是可以分配给处理器并由处理器执行的一个实体 ; 可以 是由单一顺序的执行显示, 一个当前状态和一组相关的系统资源所描述的活动单元。 0068 线程 (thread) , 有时被称为轻量级进程(Lightweight Process, LWP) , 是程序执行 说 明 书 CN 103544068 A 7 5/14 页 8 流的最小单元。 线程是进程中的一个实体, 是被系统独立调度和分派的基本单位, 线程自己 不拥有系统资源, 只拥有一点在。
29、运行中必不可少的资源, 但它可与同属一个进程的其它线 程共享进程所拥有的全部资源。 0069 一个线程可以创建和撤消另一个线程, 同一进程中的多个线程之间可以并发执 行。每一个程序都至少有一个线程, 若程序只有一个线程, 那就是程序本身。线程是程序中 一个单一的顺序控制流程。 在单个程序中同时运行多个线程完成不同的工作, 称为多线程。 0070 IPC(Inter-Process Communication, 进程间通信) , 是进程间通讯一种机制, 操作 系统的进程和线程可以通过它交换数据和消息。 0071 浏览器中, 第一I/O线程和第二I/O线程可以用于数据的传输 ; 窗口线程可以为浏 。
30、览器的标签网页 (Tab page) 进行对应的网页处理, 具体地, 标签页面子线程可以为对应的 网页进行网页资源加载处理。 0072 在本发明的一种优选实施例中, 所述步骤 101 具体可以包括如下子步骤 : 0073 子步骤 S11, 在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹 配的浏览器内核进程 ; 0074 在具体实现中, 获知用户请求的网页与浏览器内核进程之间的适配关系 (即当前 网页适于采用哪个浏览器内核进程进行加载) 的方法可以有多种。 0075 其中一种方法, 可以根据从请求信息获得的内容以及预置规则, 获知用户请求的 网页与所述浏览器内核进程之间的适配关。
31、系。 0076 具体而言, 预置规则可以包括特定适配规则、 通用适配规则和 / 或不适配规则, 在 请求加载网页的过程中, 可以根据特定适配规则、 通用适配规则和 / 或不适配规则, 获知用 户请求的网页与浏览器内核进程之间的适配关系。其中, 特定适配规则可以包括网页与浏 览器内核进程之间的适配关系, 通用适配规则可以包括为用户选择平均加载速度最快的浏 览器内核进程或为用户选择对网络标准支持最好的浏览器内核进程, 不适配规则可以包括 网页与浏览器内核进程之间的不适配关系。 0077 由于浏览器还会根据接收到的加载请求向对应的服务器发送关于加载网页的加 载请求信息, 服务器会针对加载请求信息返回。
32、响应信息, 在响应信息中会携带一些网页的 页面内容等信息, 因此在此种情形下, 还可以根据从服务器返回的针对加载请求信息的响 应信息获得的内容以及预置规则, 重新获知与用户请求的网页适配的浏览器内核进程 ; 如 果重新获知的适配的浏览器内核进程与此前基于请求信息获知的适配浏览器内核进程不 同, 则选择重新获知的适配浏览器内核进程加载用户请求的网页。 0078 另外一种方法中, 由于浏览器还会根据接收到的加载请求向对应的服务器发送关 于加载网页的加载请求信息, 服务器会针对加载请求信息返回响应信息, 在响应信息中会 携带一些网页的页面内容等信息, 因此在该方法中, 可以直接根据从服务器返回的针对。
33、加 载请求信息返回的响应信息获取的内容以及预置规则, 获知用户请求的网页与浏览器内核 进程之间的适配关系。 0079 当然, 也可以根据从加载请求获得的内容、 从服务器返回的针对加载请求信息返 回的响应信息获取的内容以及预置规则, 共同获知用户请求的网页与浏览器内核进程之间 的适配关系。 0080 另外, 在使用上述各实施例提供的方法加载网页时, 还可以对加载用户请求的网 说 明 书 CN 103544068 A 8 6/14 页 9 页的情况进行检测 ; 如果出现符合预置的浏览器内核进程切换条件的现象, 则根据预置规 则重新获知与该网页适配的浏览器内核进程 ; 选择重新获知的适配的浏览器内核。
34、进程加载 用户请求的网页。 其中, 符合预置的浏览器内核进程切换条件的现象可以包括 : 在加载过程 中检测所加载速度较慢, 或者在加载完毕后检测到网页没有正常显示, 等等。 0081 在本发明的一种优选实施例中, 所述子步骤 S11 进一步可以包括如下子步骤 : 0082 子步骤 S111, 在预置的白名单中查找与当前网页的 URL 适配的浏览器内核进程 ; 0083 和 / 或, 0084 子步骤 S112, 在预置的黑名单中查找与当前网页的 URL 不适配的浏览器内核进 程。 0085 在具体实现中, 白名单中可以记载特定适配规则和 / 或通用适配规则, 黑名单中 可以记载不适配规则。 0。
35、086 子步骤 S12, 当查找到时, 判定匹配的浏览器内核进程为第二浏览器内核进程。 0087 当在白名单中查找到当前浏览器的浏览器内核进程时, 则可以判定该浏览器内核 进程为第二浏览器内核进程 ; 0088 当在黑名单中查找到当前浏览器的浏览器内核进程时, 则可以判定除该浏览器内 核进程外的浏览器内核进程为第二浏览器内核进程。 0089 步骤 102, 采用所述第一浏览器内核进程接收触发当前网页加载的操作指令 ; 0090 操作指令可以为用户进行的网页操作的具体指示, 例如前进、 后退等等, 具体可以 包括操作名和 / 或操作参数。 0091 在本发明的一种优选实施例中, 所述步骤 102。
36、 具体可以包括如下子步骤 : 0092 子步骤 S21, 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 0093 在具体实现中, 第一浏览器内核进程可以采用第一 I/O 线程接收操作指令。 0094 步骤 103, 通过所述第一 I/O 线程将所述操作指令发送至所述第二 I/O 线程中 ; 0095 当前网页适于采用第二浏览器内核进行加载, 为提高网页加载的效率, 可以采用 第二浏览器内核进程进行加载, 则需要获取对应的操作指。 0096 步骤 104, 采用所述第二 I/O 线程将所述操作指令发送至当前网页对应的标签页 面子线程中 ; 0097 当第二 I/O 线程获取到操作。
37、指令账号, 便可以发送至当前网页对应的标签页面子 线程, 用以进行网页资源的加载。 0098 在本发明的一种优选实施例中, 所述操作指令中可以包括第二浏览器内核进程标 识 (Process ID) 和标签页面子线程标识 (Tab page ID) ; 所述步骤 104 可以包括如下子步 骤 : 0099 子步骤 S31, 提取所述操作指令中的第二浏览器内核进程标识和标签页面子线程 标识 ; 0100 子步骤 S32, 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送 至所述第二浏览器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 0101 第二浏览器内核进程标识可以用。
38、于标识第二浏览器内核进程, 标签页面子线程标 识可以用于标识标签页面子线程, 第二浏览器内核进程标识和标签页面子线程标识可以指 示唯一的当前页面对应的标签页面子线程。 说 明 书 CN 103544068 A 9 7/14 页 10 0102 系统消息循环指令 (PostMessage) 是 Windows API(Application Programming Interface, 应用程序编程接口)中的一个常用函数, 用于将一条消息放入到消息队列 中。该函数将一个消息放入 (寄送) 到与指定窗口创建的线程相联系消息队列里, 不等待 线程处理消息就返回, 是异步消息模式。消息队列里的消息通过。
39、调用 GetMessage 函数和 PeekMessage 函数取得。 0103 本发明实施例中的消息处理函数位于第二 I/O 线程中, 需要将每个特定的操作指 令重新转发, 因为它最终接受到的操作指令还是在第二 I/O 线程内执行, 具体示例可以见 下 : 0104 说 明 书 CN 103544068 A 10 8/14 页 11 0105 其中, Msg 为操作指令。 0106 因 为 以 上 的 消 息 处 理 函 数 在 是 在 第 二 I/O 线 程 中,所 以 处 理 函 数 OnExecuteCodeEx 无法直接处理操作指令, 还需要给当前窗口线程的标签页面子线程重新 说 明。
40、 书 CN 103544068 A 11 9/14 页 12 转发一次, 然后在当前标签页面子线程的消息处理函数 WndProc 内处理。 0107 步骤 105, 采用所述标签页面子线程按照所述操作指令对当前网页进行渲染 ; 0108 不同的的浏览器内核进行渲染的方式可以是不一样的, 以 Trident 内核为例, 加 载和渲染 HTML 页面可以如下 : 0109 1、 Trident 内核下载网页资源的顺序是从上到下, 渲染网页资源的顺序也是从上 到下, 下载和渲染是同时进行的 ; 0110 2、 在渲染到页面的某一部分时, 其上面的所有部分都已经下载完成 (并不是说所 有相关联的元素都。
41、已经下载完) ; 0111 3、 如果遇到语义解释性的标签嵌入文件 (JS脚本, CSS样式) , 那么此时Trident内 核的下载过程会启用单独连接进行下载 ; 0112 4、 并且在下载后进行解析, 解析过程中, 停止页面所有往下元素的下载 ; 0113 5、 样式表在下载完成后, 将和以前下载的所有样式表一起进行解析, 解析完成后, 将对此前所有元素 (含以前已经渲染的) 重新进行渲染 ; 0114 6、 JS、 CSS 中如有重定义, 后定义函数将覆盖前定义函数。 0115 需要说明的是, 加载当前网页所需的网页资源可以由第一浏览器内核进程向服务 器请求获取, 并通过第一 I/O 线。
42、程将网页资源发送至第二 I/O 线程中。 0116 步骤 106, 通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 0117 第二浏览器内核进行完成渲染操作之后, 便可以将渲染后的网页发送至第一浏览 器内核进行显示。 0118 步骤 107, 采用所述第一浏览器内核进程对渲染后的网页进行显示。 0119 具体实现中, 第一浏览器内核进程可以包括 UI (User Interface, 用户界面) 线程, 可以采用 UI 线程进行渲染后的网页进行显示。 0120 本发明可以在判定当前网页适于采用第二浏览器内核进程加载时, 使得浏览器的 两个浏览器内核进程进行切换, 可。
43、以使用第一浏览器内核进程的操作指令可以准确而高效 地转达到指定的网页的标签页面子线程中进行, 实现网页的正常渲染和加载, 返回第一浏 览器内核进程中进行显示, 提高了网页的加载速度和效率。 0121 参照图 2, 示出了根据本发明一个实施例的一种浏览器中进程间通信的装置实施 例的结构框图, 所述浏览器可以包括第一浏览器内核进程和第二浏览器内核进程, 所述第 一浏览器内核进程可以包括第一 I/O 线程, 所述第二浏览器内核进程可以包括第二 I/O 线 程、 I/O 信息分发线程和窗口线程, 所述窗口线程可以包括一个或多个标签页面子线程, 所 述装置具体可以包括如下模块 : 0122 适配内核判定。
44、模块 201, 适于采用所述第一浏览器内核进程判定当前网页适于采 用第二浏览器内核进程加载 ; 0123 操作指令接收模块 202, 适于采用所述第一浏览器内核进程接收触发当前网页加 载的操作指令 ; 0124 第一操作指令发送模块 203, 适于通过所述第一 I/O 线程将所述操作指令发送至 所述第二 I/O 线程中 ; 0125 第二操作指令发送模块 204, 适于采用所述第二 I/O 线程将所述操作指令发送至 当前网页对应的标签页面子线程中 ; 说 明 书 CN 103544068 A 12 10/14 页 13 0126 渲染模块 205, 适于采用所述标签页面子线程按照所述操作指令对。
45、当前网页进行 渲染 ; 0127 网页发送模块 206, 适于通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 0128 网页显示模块 207, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 0129 在本发明的一种优选实施例中, 所述操作指令接收模块还可以适于 : 0130 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 0131 在本发明的一种优选实施例中, 所述操作指令中可以包括第二浏览器内核进程标 识和标签页面子线程标识 ; 0132 所述第二操作指令发送模块还可以适于 : 0133 提取所述操作指令中的第二浏览器内核进程标识和标签页面。
46、子线程标识 ; 0134 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至所述第二 浏览器内核进程标识和标签页面子线程标识对应的标签页面子线程中。 0135 在本发明的一种优选实施例中, 所述适配内核判定模块还可以适于 : 0136 在所述第一浏览器内核进程中采用当前网页的 URL 查找当前网页匹配的浏览器 内核进程 ; 0137 当查找到时, 判定匹配的浏览器内核为第二浏览器内核进程。 0138 在本发明的一种优选实施例中, 所述适配内核判定模块还可以适于 : 0139 在预置的白名单中查找与当前网页的 URL 适配的浏览器内核进程 ; 0140 和 / 或, 0141 在。
47、预置的黑名单中查找与当前网页的 URL 不适配的浏览器内核进程。 0142 对于装置实施例而言, 由于其与方法实施例基本相似, 所以描述的比较简单, 相关 之处参见方法实施例的部分说明即可。 0143 本发明还提供了一种浏览器, 所述浏览器可以包括第一浏览器内核进程和第二浏 览器内核进程, 所述第一浏览器内核进程可以包括第一 I/O 线程, 所述第二浏览器内核进 程可以包括第二 I/O 线程、 I/O 信息分发线程和窗口线程, 所述窗口线程可以包括一个或多 个标签页面子线程, 所述浏览器具体可以包括如下模块 : 0144 适配内核判定模块, 适于采用所述第一浏览器内核进程判定当前网页适于采用第。
48、 二浏览器内核进程加载 ; 0145 操作指令接收模块, 适于采用所述第一浏览器内核进程接收触发当前网页加载的 操作指令 ; 0146 第一操作指令发送模块, 适于通过所述第一 I/O 线程将所述操作指令发送至所述 第二 I/O 线程中 ; 0147 第二操作指令发送模块, 适于采用所述第二 I/O 线程将所述操作指令发送至当前 网页对应的标签页面子线程中 ; 0148 渲染模块, 适于采用所述标签页面子线程按照所述操作指令对当前网页进行渲 染 ; 0149 网页发送模块, 适于通过所述第二 I/O 线程将渲染后的网页发送至所述第一 I/O 线程中 ; 说 明 书 CN 103544068 A 13 11/14 页 14 0150 网页显示模块, 适于采用所述第一浏览器内核进程对渲染后的网页进行显示。 0151 在本发明的一种优选实施例中, 所述操作指令接收模块还可以适于 : 0152 采用所述第一 I/O 线程接收到触发当前网页加载的操作指令。 0153 在本发明的一种优选实施例中, 所述操作指令中可以包括第二浏览器内核进程标 识和标签页面子线程标识 ; 0154 所述第二操作指令发送模块还可以适于 : 0155 提取所述操作指令中的第二浏览器内核进程标识和标签页面子线程标识 ; 0156 采用所述第二 I/O 线程采用系统消息循环指令将所述操作指令发送至。