浅谈关于QT中Webkit内核浏览器
关于QT中Webkit内核浏览器是本文要介绍的内容,主要是来学习QT中webkit中浏览器的使用。提起WebKit,大家自然而然地想到浏览器。作为浏览器内部的主要构件,WebKit的主要工作是渲染。给定一个HTML文件,WebKit的工作是把 HTML 格式的内容绘制出来,包括:
- HTML 的布局,譬如左边是什么,顶部是什么,中间是什么。
- 根据用户设定,呈现文字,譬如字体是宋体还是楷书,大小尺寸,重体斜体等等。
- 显示不同格式的图片,譬如 JPG , GIF , PNG 等等。所以, WebKit是一个渲染机(Rendering Engine )。
浏览器与用户的交互,主要通过 JavaScript 程序控制 。譬如用户在浏览器界面上移动鼠标,有些图标会放大或缩小,颜色会变化等等。 严格说来,JavaScript Engine不属于WebKit,但是WebKit自带了一个JavaScript Engine,SquirrelFish。
不过在WebKit框架下,可以把SquirrelFish Java Engine替换成其它版本,而不影响WebKit整体工作。譬如,Google的Chrome浏览器,内部使用的渲染机是WebKit,但是 Google没有用SquirrelFish,而是自己另起炉灶开发了一套JavaScript Engine,取名V8。V8的来历不清楚,或许是因为Google的工程师喝多了V8果蔬饮料,所以就取了这么个名字。就如同Sun Microsystems的工程师喝多了咖啡,于是把他们发明的新语言定名为Java一样。
说起渲染机(Rendering Machine ),微软的 IE 浏览器用的 Rendering Engine ,名曰三叉戟( Trident );Firefox 用的 Rendering Engine ,叫 Gecko 。而 Apple 的 Safari ,以及 Google 的 Chrome ,用的 Rendering Engine 都是 WebKit。
虽然IE浏览器 占据大部分市场份额,但是谈论 Trident 的文章不是很多。而Firefox使用的Gecko,它的特点是小,有点像 OS 的微内核一样,扩展性很好;最近几年,谈论 WebKit 的文章很多,甚至有人断言, WebKit是当今最好的Rendering Engine。WebKit之所以大热, 估计与以下几个因素有关:
- WebKit 的前身是由开源的 Linux 项目组 KDE 设计开发的 KHTML ,后来 Apple 觉得这个产品不仅开源,而且架构设计简洁高效,所以就参与开 发。再后来,在产品未来开发计划上, Apple 与 KDE 产生分歧,于是各干各的, Apple 把产品名字改为 WebKit 。
- 基于 WebKit , Apple 公司于 2003 年推出 MacOS 平台的浏览器, Safari 。
- 2005 年, WebKit 源代码向公众开放。
- 同年, Nokia 推出 S60 平台的手机浏览器,其内部 Rendering Engine ,也是 WebKit 。
- 同年, KDE 宣布放弃 KHTML ,改用 WebKit 。
- 2007 年, Apple 推出手机 iPhone ,引起轰动。 iPhone 自带的手机浏览器,也使用了 WebKit 。 iPhone 的浏览器,缩放自如,引人注目。
- 2008 年, Google 推出浏览器 Chrome ,其内部 Rendering Engine ,也是 WebKit 。
需要指出的是, Rendering Engine 的用途,并不限于浏览器,而是可以充当通用的 UI 实现平台。譬如,微软的电子邮件软件 Outlook ,虽然不是浏览器,但是其界面渲染,使用了微软的Rendering Engine,Trident。甚至微软的其他 Office 系列软件,也使用了 Trident。
Chrome为什么要用Rendering Engine来处理渲染,而不是用Java Swing那样的UI工具?估计有两个原因:
1、方便开发,吸引更多开发者。
Java Swing固然不难用,但是广大开发者更熟悉HTML+CSS+JavaScript。哪个手机能吸引更多开发者,它就能获得更多更好的应用程序。哪个手机能拥有更多更好的应用程序,它的市场前景就更广阔。使用C/C++语言的开发者人数,不如Java的多。Java的用户,不如HTML+CSS+JavaScript的多。Palm WebOS之所以把GUI的管理基于WebKit基础之上,估计主要的目的是吸引广大Web开发者,这些人最熟悉的工具就是 HTML+CSS+JavaScript。
Ruby on Rails的缔造者,David H. Hansson,于2007年6月发表过一篇博客,题为“我就是喜欢HTML+CSS+JavaScript,咋了?”( http://ajax.sys-con.com/node/395424)。文中表达了这么一个观点,以 HTML+CSS+JavaScript为代表的Web技术源于实践,它们已经发展和经受了10多年的考验。现在大家要做的,不是去追求无必要的所谓完美,而是用好HTML+CSS+JavaScript,把它们的潜力充分挖掘出来。或许David H. Hansson的观点有点偏激,但是不可否认的是,他的观点有很多拥护者。基于WebKit之上的GUI系统设计,Palm WebOS是不是有意迎合Web开发者?
2、工作流程的柔性组织。
复杂一点的应用程序,通常由多个页面组成,页面与页面之间的衔接,称为工作流程。应用程序的更新,不仅涉及每个页面的内容的更改,而且也涉及工作流程的变更。WebKit 这样的Rendering Engine,不仅提供了单个页面的渲染,而且也提供了历史页面的缓存,支持后退(Back),前进(Forward)以及历史(History)等等功能。同时,WebKit能够记忆用户对于每个页面做过哪些修改,甚至提供恢复(Undo)功能。
小结:浅谈关于QT中Webkit内核浏览器的内容介绍完了,希望通过本文的学习能对你有所帮助!
浅谈关于QT中Webkit内核浏览器的更多相关文章
- 八大Webkit内核浏览器
列举出时下最流行的Webkit内核浏览器,所以我们并不会做出评测和对比.PS:本文列举的浏览器有一部分为IE+Webkit双核浏览器,如果您对其他IE内核浏览器很感兴趣<抛弃数据!用体验和感觉告 ...
- 浅谈C++11中的多线程(三)
摘要 本篇文章围绕以下几个问题展开: 进程和线程的区别 何为并发?C++中如何解决并发问题?C++中多线程的基本操作 浅谈C++11中的多线程(一) - 唯有自己强大 - 博客园 (cnblogs.c ...
- 【前端】webkit内核浏览器DIV滚动条样式修改和设置
webkit内核浏览器DIV滚动条样式修改和设置 引言: 最近在做自己的小项目,为了设计出好看的页面费劲了心思,大到页面的整体布局,小到DIV的滚动条都不放过,以下是我通过查阅资料总结的webkit内 ...
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- 浅谈C++11中的多线程(二)
摘要 本篇文章围绕以下几个问题展开: 进程和线程的区别 何为并发?C++中如何解决并发问题?C++中多线程的基本操作 浅谈C++11中的多线程(一) - 唯有自己强大 - 博客园 (cnblogs.c ...
- 转: 浅谈C/C++中的指针和数组(二)
转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...
- 转:浅谈C/C++中的指针和数组(一)
再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...
- 转载 浅谈C/C++中的static和extern关键字
浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.ext ...
- 浅谈C语言中的强符号、弱符号、强引用和弱引用
摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014- ...
随机推荐
- C#编程(二十五)----------接口
接口 如果一个类派生自一个接口,声明这个类就会实现某些函数.并不是所有的面向对象的语言都支持接口. 例如,有一个接口:IDispoable,包含一个方法Dispose(),该方法又类实现,用于清理代码 ...
- Java Date 日期 时间 相关方法
DateTools.java import java.text.SimpleDateFormat; import java.util.Date; /** * 日期操作类 */ public class ...
- android加密DESede/CBC/PKCS5Padding
from://http://my.oschina.net/u/269082/blog/56163 工作中需要和HPH对接,接口一些敏感信息,讨论后用3DES加密,由于我做的android邮件客户端是依 ...
- .NET:注意 Primitive 这个小坑
背景 有个需求,需要递归遍历类型的所有属性(属性的属性),然后对不同的类型做不同的处理,或者只是将类型分为三类:Primitive.Complex 和 Collection.因为 MS 的 Type ...
- python测试开发django-34.xadmin管理后台
前言 django自带的admin后台管理页面有点丑陋,于是网上的大神优化了一版后台管理xadmin,并且开源了,在github开源下载到源码. 注意环境搭配: django 2.1.2 xadmin ...
- Tomcat集群下获取memcached缓存对象数量,统计在线用户数据量
项目需要统计在线用户数量,系统部署在集群环境下,使用会话粘贴的方式解决Session问题.要想得到真实在线用户数,必须是所有节点的总和. 这里考虑使用memcached存放用户登录数据,key为use ...
- 使用node-webkit实现打包工具的小结
之前一直使用的hta在开发工具,最近转到node-webkit上了,对比一下二者的优劣势.hta单个文件,体积较小,但有兼容性的问题(兼容ie6.7.8就行了,也还好),node-webkit使用we ...
- 应用内截屏的代码,在Activity中测试可用
截屏功能让我十分头疼,想做个无需root的又找不到资料.这里暂且分享一个无需root的,在应用内截屏的代码,本文转自:http://blog.csdn.net/csh159/article/detai ...
- Asp.Net Core WebAPI入门整理(四)参数获取
一.总结整理,本实例对应.Net Core 2.0版本 1.在.Net Core WebAPI 中对于参数的获取及自动赋值,沿用了Asp.Net MVC的有点,既可以单个指定多个参数,右可以指定Mo ...
- ASP.NET网页中RAR、DOC、PDF等文件下载功能实例源代码
以前做asp.net下载功能的时候都是采用:<a href="http://www.wang0214.com/wgcms">下载</a>的方式来实现下载. ...