webkit初学请教

duwn124 发布于 2012/12/08 17:38
阅读 1K+
收藏 1

@Lunar_Lin 你好,想跟你请教个问题:

抱歉打扰,我是一个webkit初学者。请问在VS2005上使用webkit去分析一个html页面的加载,解析,排版的话应该在什么地方打断点呢?另外,能否根据您的经验给一些学些上的指导呢?多谢多谢

加载中
0
Lunar_Lin
Lunar_Lin
      恩. 相信你也看了我以前随便码的那些字. 附带得链接 如果都读完了, 这些问题你应该很清楚拉.

     a. 加载如果你是指发起一次访问   那就断在 FrameLoader::load( ResourceRequest ),   后续会有很多无聊得检查.
     如果你是指拿到html后,创建DOM对象的话 可以断在 FrameLoader的ReceivedData和其后续的 transitionToCommittedForNewPage, frame::createView().

    命名上 mainresource就是指html, 其他的subresource就是图片,js,css之类.
   b.  解析 你应该是指html的解析吧.
    HTMLTokenizer::write() 断在这里.  然后它调用的一大堆解析函数,会一个个的创建DOM结点, 解析完,也就创建完了.
    css的解析很简单, 随便看看即可.    js的解析, 我建议也随便看看, 有精力的话读V8更合适.
    c.  排版的话,  断在 layout处, 你拿这个词搜索下源代码 就知道位置了.   渲染的时候触发layout, layout和css的解析过程中 会创建好一大堆得renderobject 指明各个html结点的  界面绘制参数,  渲染的时候,就是读取对应得renderobject对象拿到需要得坐标值, 字体大小,透明什么的类似得信息,然后调用GraphicsContext对象去画画.

     个人经验:
     1. 一定要记笔记, 主要记主线流程和自己不清楚且感兴趣的部分.
     2. 借助好代码工具, 多加断点,多画图, 清晰执行流程 . 看过很多开源代码, webkit代码很乱七八糟, 有人宣称它比firefox代码好看,  我就猜想firefox的代码得乱到什么程度(暂时没空去看了.)   =.=||   
     3.  先看足 足够的文章再去看代码, 我博客里的链接是我以前百度,google,bing 关键字,翻上N个面的信息. 原因也是因为webkit代码太多,直接去看, 基本2,3天都没什么名堂.
     4.  明确你读webkit代码的目的,
     如果只是为了学习优秀的代码写法, webkit代码总体不算非常优秀, 这个时代有更多更漂亮的项目可以看.
     如果为了了解浏览器的实现, 多读文章,代码为辅. 空出多余的精力, 再看看firefox和chrome.
     如果就是为了学习webkit, 请明确你真的要拿它赚钱, 赚工资. 它能给你带来得财富回报. 然后全身心的投入吧. 多改改源代码, 编译自己的版本. 多折腾.

     赚钱第一.
     That's all!

0
neugraduzyq
neugraduzyq
借着宝地问下,执行js解析调用路径是啥?我的版本看不到,囧
返回顶部
顶部