webkit内核源代码导读2: FrameLoader的初步分析

使用CEfSharp之旅(10) 终极大杀器: cefsharp 使用js获取 websocket 的数据 这个cefsharp的专栏建立也有将近三年了。 本人的研究这块的群,也已经进入了不少的小伙伴了。 疫情期间在家有时间把,把这块的代码整理了下,发出来,给需要的小伙伴。 终极解决方案哦。而且是经过众多网友测试可行的。哈哈 ,等不及了,直接看代码 一、创建websocket 的server 和client 端 这里server代码: using System; using System.Collections.Generic; using System.ComponentModel; usi. 阅读详情

从网页加载开始

阅读webkit的代码,从网页加载开始。FrameLoader就是执行加载的代码。FrameLoader的load方法是加载的入口函数。load方法有若干个重载,但是最终都会调用到一个终极load方法。 另外,load过程是异步的,并在load过程中,有多种控制加载是否继续的策略。

这些在我们分析源码的时候,都忽略掉。他们对我们理解加载的主要过程没有任何影响。


了解FrameLoader主要相关类


  • DocummentLoader: 顾名思义,不讲了;
  • MainResourceLoader:加载网页的Loader。网页被成为主资源,网页所引用的css, js, image等资源,被称为子资源
  • CachedResourceLoader: 从缓存中获取资源
  • DocumentWriter : 将获取的数据流写入到这个writer中,它可以看作一个缓冲区,它负责进行处理 (交给DocumentParser进行解析,下章将详细说明)
  • 资源加载的具体工作,由专门的ResourceLaoder和Cache模块来实现,模块独立性比较高。


主资源加载过程

以一个单独的网页来说明这个过程,使用序列图

该图对FrameLoader做了高度简化,因此,在阅读源代码时,需要注意找关键点来阅读。

  • 从FrameLoader的load函数开始,经过一系列处理后,它终于调用到DocumentLoader的startLoadingMainResource函数,进而调用到MainResourceLoader的load
  • MainResourceLoader负责调用真正的资源加载模块。当收到数据后,资源加载模块会调用它的receivedData函数
  • DocumentLoader调用FrameLoaderClient的函数可以忽略了,这是为了给外部代码一个机会来处理收到的数据。当committedData被调用后,数据被写入到DocumentWriter中
  • DocumentWriter可以理解为一个缓冲区,DocumentWriter在调用DocuementParser来执行代码解析的工作。


这一部分仅是主资源加载的功能,对于子资源的加载,是通过和DocumentParser的交互来完成的。这一点在讲解解析器的时候会提到。


这里有必要提醒一下:DocumentLoader的commitData函数第一次收到数据时,它会调用DocumentWriter的begin函数。这个函数会调用DocumentWriter::createDocument来创建一个Document对象。然后从Document对象中取得一个DocumentParser对象,调用它的appendBytes方法。

DocumentWriter::createDocument方法会根据URL创建不同的Document。对于我们,感兴趣的是它会创建HTMLDocument对象。 详细可以查阅DOMImplementation::createDocument的实现。


WebKit启动流程深入剖析:核心代码解析 我们了解了WebKit的启动流程。掌握这些技巧将有助于提高你的网页开发效率,并确保你的应用程序能够稳定、高效地运行。希望这篇文章能够帮助你更好地理解和运用WebKit技术。祝你开发愉快! 阅读详情

相关推荐

cefsharp多核浏览器-进度条实现方法

进度条样式自选 实现方法 **FrameLoadStart中显示且最前(不被遮挡) 原生界面布局 未加载完之前加载,加载完后消失! browser.MenuHandler = new MenuHandler();//右键菜单 browser.DownloadHandler = new DownloadHandler();//下载 browser.LifeSpanHandle

无线智能模块 可视DIY智能专家 1220

WebKit内核源码分析

要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。在分析内核的时候,Frame是首当其冲的一个类,本文将分析Frame类的代码。 1. 描述 Frame类是WebCore内核同应用之间联系的一个重要的类。它有点像设计模式中的Façade,将内核的各个不同的零配件组装在了一起...

popostart的博客 279

浏览器内核分析2 -- Webkit和Chromium源码结构

1 Webkit架构Webkit和Blink代码量都是几百万行级别,阅读难度很大,故先了解下它的大体架构是十分有意义的。下面是《Webkit技术内幕》一书中给出的架构图由图中可见,大体分为以下几个层次 1. 操作系统:WebKit可以在不同OS上运行,如mac OS,Windows,Linux等。 2. 三方库:WebKit依赖了很多三方库,如音频,视频等 3. WebKit:大概分为两个部分

谢杨易的博客 1万+

WebKit内核源代码分析(二)

摘要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。FrameLoader类负责一个Frame的加载,在Frame的流程中起到非常重要的重要,同很多组件都有交互,本文将分析FrameLoader类的代码。 1. 概述 顾名思义,FrameLoader是一个Frame的lo...

popostart的博客 381

WebKit内核源代码分析(1)

本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以QT的移植为参考,涉及移植的东西不多,主要还是以内核为主。在分析内核的时候,Frame是首当其冲的一个类,本文将分析Frame类的代码。

一个完整的WebKit嵌入式浏览器内核源代码

mbrowser 是一个基于webkit核心开发的嵌入式浏览器,这个是它的源代码win32/wince版本

(转)WebKit内核源码分析

转自:红心地瓜的专栏,WebKit内核源码分析。 WebKit内核源码分析 WebKit内核源码分析(一) 摘要:本系列通过分析WebKit的源代码,试图分析WebKit的内核设计架构,模块之间的关系,分析的时候以Qt的移植为参考,涉及移植的东西不多,主要还是以内核为主。在分析内核的时候,Frame是首当其冲的一个类,本文将分析Frame类的代码。 1.    描述 Frame类是W

zhangfanlong的博客 2360

Dataworks实现接口调用

在本地linux虚拟机(不用在意linux版本),安装Anaconda后配置对应的虚拟环境,将虚拟环境的python包整体打包(路径一般为:~/anaconda/envs/env_name/lib/pyyhon3.7/site-packages):上传资源,将第三方包上传至dataworks(注意:所有上传文件均要打包上传,直接上传文件会乱码导致无法使用):PyODPS,其中PyODSP2的python版本为2.7,PyODSP3的python版本为3.7。:在PyODPS中引用资源,然后开发接口。

hutc_Alan的博客 1680

WebKit内核分析之FrameLoader

参考地址:http://blog.youkuaiyun.com/dlmu2001/article/details/6168545 FrameLoader类负责一个Frame的加载,在Frame的流程中起到非常重要的作用,同很多组件都有交互,本文将分析FrameLoader类的代码 1. 概述      顾名思义,FrameLoader是一个Frame的loader,它的作用就是为客户端提供一个下载一个F...

weixin_34267123的博客 212

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

基于51单片机扫地机器人(全套Proteus仿真+原理图+程序+说明书)

(内含源程序代码,原理图,仿真,讲解视频,元件清单等,【精品】值得推荐!!!扫地机器人是以单片机为主控制器。通过单片机控制小车行驶、除尘、蜂鸣。扫地机器人使用双电机驱动,以提高整车运动的平稳性;在智能车进驶过程中,采用双超声波模块实现避障。

2301_76434107的博客 1894

webkit内核源代码导读

webkit内核源代码导读2: FrameLoader的初步分析 分类: webikit2013-05-22 14:45 481人阅读 评论(1) 收藏 举报 从网页加载开始 阅读webkit的代码,从网页加载开始。FrameLoader就是执行加载的代码。FrameLoader的load方法是加载的入口函数。load方法有若干个重载,但是最终都会调用到一个终极loa

luozirong的专栏 1542

RK3568 开发实战:手动构建 Linux 4.19 内核镜像与设备树优化

本文详细介绍了为RK3568开发板手动编译Linux 4.19内核的完整实战流程。从环境搭建、源码获取、内核配置,到设备树深度定制与优化,再到镜像打包与烧写,旨在帮助开发者脱离官方SDK依赖,实现对嵌入式Linux系统的完全掌控,提升硬件适配与性能优化能力。

weixin_29175469的博客 269

深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析

????????关注后回复“进群”,拉你进程序员交流群????????作者丨童红明来源丨百度App技术前言移动互联网时代,网页依旧是内容展示的重要媒介,这离不开 WebKit 浏览内核...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 988

28-3 文件上传漏洞 -白盒审计绕过

这行代码是用来获取文件名中最后一个点(.)后的部分,也就是文件的后缀名。这个函数会返回以最后一个点(.)开始到字符串末尾的部分,包括点(.)本身。然而,这段代码存在一个潜在的安全风险。攻击者可以利用多个点(.)来构造恶意文件名,以绕过后缀名检查。切换到bp将抓到的上传请求发送到重发器然后改包。先上传一个普通的php文件然后使用bp抓包。

weixin_43263566的博客 392

用python画带有正负值的条形图

常见的条形图只能表现数据的大小,却不能表现值的正负关系。但是其实仅仅使用`pandas`和`matplotlib`两个包就可以实现y轴负轴的添加以及负值的显示,并且可以为正负值分别设置不同的颜色,让条形图看上去更加清晰,易于我们分析

weixin_44853840的博客 5382

Android WebView主资源加载过程

当我们在浏览器中输入一个网址时,浏览器会调用到WebView的loadUrl接口,开始加载页面资源,本章节就主要介绍HTML主资源的加载过程,参考的chromium版本是48.0.2542.0,也是我们Android M使用的版本。整个资源加载流程非常复杂,下图只是列出主要的几个调用过程,其中绿色表示browser进程,蓝色表示render进程,整个调用过程从framework层的api load...

Mouse 5062

RK3568笔记九十四:基于QT的YOLOV5目标检测

基于RK3568平台的实时目标检测应用,使用YOLOv5模型和RKNN推理引擎实现摄像头实时目标检测,并通过Qt界面显示检测结果。主要功能实时摄像头目标检测:从摄像头获取视频流,使用YOLOv5模型进行目标检测RKNN推理加速:利用RK3568内置的NPU进行模型推理加速图形界面显示:使用Qt框架构建用户界面,实时显示检测结果RGA图像处理:使用Rockchip Graphic Accelerator进行图像缩放处理。

522

winform 跳转到物流信息

public SxWebBrower webBrowser; string TbClientFormUrl = "https://www.kuaidi100.com/"; private string _wlOrder; public kuaidi100Form(string wlOrder) { InitializeComponent(); _wlOrder = wlOrder; ...

lyj709481260的博客 340

Windows配置L2TP/IPsec连接

Windows 系统的 L2TP/IPsec 功能,通过配置即可构建加密 VPN 通道。

m0_61806534的博客 1666

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

如何使用iframe加载loading效果让你的网站更加专业

如何使用iframe加载loading效果让你的网站更加专业

希望看完文章的你能够带着答案离开。 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

webkit源码分析

Webkit源码分析

yzy9508的博客 943

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WebKit内核源代码分析(五)

WebKit内核源代码分析(五)红心地瓜(tomorrow.cyz@gmail.com) 摘要:本文分析WebKit中html的解析过程,DOM节点树的建立。 关键词:WebKit,html解析,html tree construction,WebCore

红心地瓜的专栏 2万+

Webkit加载模块

1,Webkit加载的主要模块 Loader的主要模块包括Frameloader、DocumentLoader以及MainResourceLoader,加载的命令是Frame传进来的。加载主要涉及的Webkit模块是page、loader与platform。主要模块图如下:   图1:加载模块图 2,主要类结构 在加载模块中,Page与Frame是最主要的与客户代码打交

Roy的IT笔记 2650

chromium 加载url 过程简析

         代码:58版本       从Render进程接收类型为FrameMsg_Navigate的IPC消息开始分析网页URL的加载过程。Render进程是通过RenderFrameImpl类的成员函数OnMessageReceived接收类型为FrameMsg_Navigate的IPC消息的,如下所示:                         1478 bool Ren...

qq_34981632的博客 897

WEBKIT内核源码分析系列

原帖地址:http://www.cnblogs.com/qq499194341/articles/2891954.html

一天 一小步 1万+
上一篇: webkit内核源代码导读1:前言及webcore最基本的类
下一篇: webkit内核源代码导读3:HTML的解析过程
漂流的代码
博客等级 码龄23年 188粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值