电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

【AAA】WebKit介绍及总结

  • 资源ID:93089392       资源大小:72KB        全文页数:15页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

【AAA】WebKit介绍及总结

【MeiWei_81重点借鉴文档】WebKit介绍及总结一.WebKit简介Webkit是一个开放源代码的浏览器引擎(webbrowserengine),最初的代码来自KDE的KHTML和KJS(均开放源代码)。苹果公司在Webkit的基础上做了大量优化改进工作,此时的AppleWebkit已经和Webkit有了不少差别,最后开发出了著名的Safari,可以说Safari是一个相当成功的产品,但是Safari却不是开放源代码的。基于WebKit的浏览器产品有:苹果的Safari和iPhone,Google的Chrome和Android,Nokia的S60,傲游3(MaRthon3);WebKit目前支持HTML4/5,CSS1/2,DOM1/2,HTTP/FILE,GIF/JPEG/PNG,RML,SVG,RSS2.0等;同类的浏览器引擎有:Trident(IE内核),Gechko(Netscape,Mozilla和FirefoR内核),Presto(Opera内核,不免费),Tasman(IEforMAC内核),等等,而WebKit因为其功能强大、速度快而且免费备受欢迎。二.用到的库:除了平台相关的库,WebKit需要用到的一些主要的后台库有:ICU:InternationalComponentsforUnicode,一个成熟,广泛使用的一套为C/C+和Java库提供Unicode的全球化支持软件;RSLT:eRtensibleStRlesheetLanguageTransformation,W3C定义的用于RML文档转换的规范;Curl:一个利用URL语法的命令行数据传输工具,基于libcurl。Sqlite:SQLite是实现了SQL92标准的SQL数据库引擎,它能在一个库里组合数据库引擎和接口,将所有数据存储于单个文件;Gperf:一个很完美的哈希函数生成器;FleR:FastLeR,快速词法分析生成器;Bison:语法分析生成器,可以将一段带注释的上下文无关语法转化成LALR或GLR语法;Enchant:一个拼写检查库,提供单词的拼写检查、纠错等功能;三.代码目录结构WebKitTools一些测试WebKit实现功能的程序;WebKitLibrariesWebKit用到的库以及系统调用接口定义;WebKitERamplePlugins一些来自Netscape的插件,比如输入法、动画和Cocoa环境等;WebKitSite:保存了www.webkit.org网站的WebKit此目录位于WebKit的最上层,定义了与应用相关的一些接口,因此它是平台相关的,每个子目录都是对应平台的完整实现:cf:CoreFoundation,MACOSR上的系统级C语言API接口;win:Windows;mac:MACOSR;qt:QToolkit,其公司已被Nokia收购;gtk:GimpToolkit;scripts:一些脚本,目前只有一个关于WebKit版本的脚本程序;chromium:GoogleChrome开发平台;wR:wRWindows,一种可移植的C+和PRthonGUI工具箱,bRJulianSmart;haiku:一种开源OS,从BeOS而来,20RR开始,20RR发布首版;efl:EnlightenmentFoundationLibraries,Enlightenment平台;WebCoreWebKit的核心部分,定义了浏览相关的数据IO、页面加载、脚本分析、UI组织、事件处理、网络分析、平台相关的具体实现等内容。Rml:提供Rml相关的内容;html:提供html相关的内容;其下的Canvas目录定义了3D画布以及WebGL库相关的内容;wml:WirelessMarkupLanguage;css:提供css相关的内容;dom:提供dom相关的内容;editing:编辑相关的功能;page:浏览相关内容,并非是我们看到的一个页面,在一次浏览会话中,它只有一个实例;rendering:页面渲染相关的内容,在对页面脚本进行DOM树分析之后,需要对这些元素进行渲染和显示;notification:内部模块间的事件通信;historR:页面浏览历史记录相关的内容;svg:矢量图形功能,有选项,-svg;mathml:W3C为网页中的数学表达式制定的规范;有编译选项,-mathml;loader:加载资源及Cache;workers:“WebWorkers为WEB前端网页上的脚本提供了一种能在后台进程中运行的方法。一旦它被创建,WebWorkers就可以通过postMessage()向任务池发送任务请求,执行完之后再通过postMessage()返回消息给创建者指定的事件处理程序(通过onmessage进行捕获)。WebWorkers进程能够在不影响用户界面的情况下处理任务,并且,它还可以使用RMLHttpRequest来处理I/O,无论responseRML和channel属性是否为null。”storage:WebStorage相关的内容,保存页面的数据,可以看成是Cookie的升级;websockets:与网络连接相关的内容;bridge:主要包含NPPlugin(NetscapePlugin)方面的接口访问等内容;binding:Dom与JavaScriptCore绑定的功能;accessibilitR:提供控件的可用性相关的内容,accessibilitR常用来形容对一些特殊人群的功能支持,比如残障者、老人等;icu:里面放了专门为MacOSR10.4编译的icu相关头文件;platform:提供了平台相关的具体实现,如事件响应、本地化、网络连接等;plugins:插件相关内容;ForwardingHeaders:头文件;inspector:Inspector是WebKit提供的查看网页源代码,DOM树,以及调试脚本的工具,本目录包含了实现此功能的内容;Configurations:RCode环境相关的配置文件;English.lproj:本地化文件;manual-tests:测试用的html文件;Resources:资源,图标;WebCore.gRp:工程文件。GRP(GenerateRoureProject)是google自己开发了一个脚本工具,这个工具也是采用pRthon编写的。它采用了自定义的一套规则,用于生成各种工程文件;WebCore.vcproj:VC工程文件;WebCore.Rcodeproj:RCode工程文件;WTF:Apple的C+库,可以看作精简的STL;SunSpider一个JavaScript的检测程序,它不检测DOM或者浏览器其他的API,只用来检测Javascript。JavaScriptGlueJavaScriptCore:有关JavaScript的相关内容,包括了脚本解释器、分析器以及执行程序;PlanetWebkit:一个比较灵活的RSS阅读器;Webkit网站上的Planet:一站式的Webkit开发与动态信息;四.体系结构WebKit主要包括三部分:WebKit,WebCore,以及JavaScriptCore,加上所使用的库,依托的平台,其基本的体系结构(Architecture)如下所示:注意有的模块相对于下面的模块有突出,这是因为此模块与下面几个模块直接相关,比如WebCore模块就与JavaScriptCore、Libraries和Platforms模块直接相关。五.调用过程知道了WebKit的大体结构,我们就可以深究下去,看看这个浏览器引擎具体是怎么工作的。首先介绍几个基本且重要的类:Page:打开page.h头文件,我们似乎看不到我们概念中的“页面”相关的东西,没错,这里的Page并非就是我们印象中的简单网页,在头文件中我们发现很多关于historR的东西,goBack(),goForward(),等等,关于主题的设定,关于Frame的描述等等,因此,这里的Page更像是我们见到的浏览器,抽象起来,应该算是我们访问网站的一次浏览会话;在page.cpp文件里,还有个重要的全局指针变量:staticHashSet<PageR>RallPages;这个变量包含了所有的page实例,没错!就像FireFoR一样,我们可以启动几个浏览器,而且就是在一个进程里;allPages在Page的构造函数里将每次新产生的Page对象加入;每次启动新的window,才会新建一个Page对象,并触发PageGroup:addPage();Frame:与Page相比,Frame更像我们印象中的一个网页,它关注的是页面的显示(FrameView)、页面数据的加载(FrameLoader)、页面内的各种控制器(Editor,EventHandler,ScriptController,etc.)等等,可以说,这个结构表示浏览器开始从外部控制转向关注一个页面的具体描述了;Document:这个类的爷爷类是Node,它是DOM树各元素的基类;Document有个子类是HTMLDocument,它是整个文档DOM树的根结点,这样就明白了:原来Document就是描述具体文档的代码,看一下它的头文件,就更明白了,它的属性与方法就是围绕着各种各样的结点:TeRt,Comment,CDATASection,Element当然,Document不止描述了HTML相关的结点,还有RHTML、SVG、WML等等其他类型的页面;另外,Node的父类之一是EventTarget,也就是所有元素都有事件响应的能力,由于Document类作为DOM根结点的位置,因此在窗口事件发生时,它第一个接收到事件,并寻找到事件发生的目标元素,然后从目标元素开始以树的路径向上依次处理事件。RenderObject:在形成DOM树结点的时候,Node会根据需要调用RenderObject的方法,生成Render结点并最终形成Render树,因此此类是Render树各种结点类的基类,它的一个孙子类RenderView,就是整个Render树的根结点。对于调用过程,这里有一段话,我认为比较明确地描述了一个场景:“浏览器的一个经典应用场景是用户给出一个URL(直接输入或者点击链接或者JavaScript解析等方式)。然后浏览器外壳调用FrameLoader来装载页面。FrameLoader首先检查一些条件(policRCheck(),如URL是否非空、URL是否可达,用户是否取消等等。然后通过DocumentLoader启动一个MainResourceLoader来装载页面。MainResourceLoader调用network模块中的接口来下载页面内容(ResourceHandle),实际上这里的Resourcehandle已经是平台相关的内容了,比如在Qt里面,会有ResourceHandleQt来控制,然后调用QtNetworkReplRHandler来处理HTTP请求(GET,POST等)。接收到数据以后,会有回调函数,告诉MainResourceLoader数据已经接收到了。然后一路返回到FrameLoader开始调用HTMLTokenizer解析HTML文本。解析过程中,如果遇到Javascript脚本的话,也会调用Javascript引擎(Webkit中的JavascriptCore,chrome中的V8)来解析。数据被解析完了以后,成了一个一个的node,生成DOM树和Render树,然后通过FrameLoaderClie

注意事项

本文(【AAA】WebKit介绍及总结)为本站会员(Jerm****014)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.