关于web浏览器的一点随笔
简单的分解浏览器时,可分为控制器和解释器组成
1.控制器
控制器处理各种ui操作的处理,负责鼠键盘操作,完成用户的指定的操作.例如,当输入一个URL或单击一个超链接时,控制器接收并分析该命令,调用一个HTML解释器来解释该页面,并将解释后的结果显示在用户的浏览器上.
2.解释器
解释器是浏览器的重要部分, 解释器,也就是解释引擎,负责对网页语法(如HTML、Javascript、样式表)的解释并显示网页,解释器决定了浏览器如何显示页面(所以由于不同的内核,同一网页会显示出不同的样子,这就是web程序员很烦躁的地方。。),解释器是浏览器最重要最核心的一个部分,一般所说的浏览器内核指的就是浏览器的解释器。
对于解释器大致可分为web解释(html)+JS解释(javascript)两个部分,也就是内核所完成的工作。
不同浏览器产品可能使用同一个内核,浏览器内核常见的有四种:Trident、Gecko、Presto和Webkit, 他们与主流浏览器的对于关系如下表:
内核 |
浏览器产品 |
Trident |
IE,Maxthon(傲游),世界之窗,腾讯TT,搜狗浏览器,360安全浏览器 |
Gecko |
Mozilla Firefox(火狐) |
Presto |
Opera浏览器 |
Webkit |
苹果Safari浏览器,Google Chrome(谷歌浏览器)及苹果Iphone手机浏览引擎 |
ps
1.在.net平台上由于本身就有webbrowser这个控件提供浏览器功能,故在此不缀叙.
但是在(arcgis for flex)开发中曾经遇到过使用该控件,却无法正确使用需要添加以下代码:
class WebBrowserClass : System.Windows.Forms.WebBrowser { protected override void WndProc(ref System.Windows.Forms.Message m) { switch (m.Msg) { case 0x201: // WM_LMOUSEBUTTON case 0x204: case 0x207: case 0x21: base.DefWndProc(ref m); return; } base.WndProc(ref m); } }
2. 在android环境下可使用开源webkit浏览器 (http://www.jjos.org/android/2010/05/10/312_webkit-webkit-for-android.html)