Internet Explorer体系结构(10)

  

1.3  开发人员工具

开发人员工具是一组内置的HTML,JavaScript和CSS工具,专门用于进行快速原型制作与网页调试。这些工具在IE 7中称为“开发人员工具栏”,可以作为加载浏览器栏的下一级;在IE 8中,这些工具得到了改进,成为内置工具。这些工具由4个主选项卡组成:HTML和样式内置编辑器、CSS样式查看器、脚本调试器和JavaScript探查器。

HTML和CSS选项卡显示关于DOM、页面布局和适用样式的可编辑信息。DOM可以通过一个树状视图对象进行编辑;在单击一个节点时,可以通过相邻面板来查看样式、布局、属性、信息和CSS跟踪。只要这个编辑器所显示的元素仍然存在于该页面中,在这个视图中对项目进行的更改都会反映到当前页面中。

脚本调试器和探查器提供了当前页面的实时脚本调试、控制台编辑、断点插入和脚本定时信息。在“脚本”选项卡(译者注:原书中为Debugger选项卡)中,开发人员可以打开和关闭调试、逐语句、逐过程和跳出;查看断点、局部变量、监视和调用堆栈。探查器显示了对当前页面所加载JavsScript函数的定时调用,以及调用数目和整体调用树。

脚本错误和查看源码

“脚本错误”对话框向用户通告网页上发生的脚本错误;为处理该网页上的脚本块而加载的脚本引擎会返回这个错误,由IE显示。在以前版本的IE中,如果注册了默认的系统调试器,有一些脚本错误会被发送到该调试器。

到了IE 8,IE中包含了内置源码查看器。“查看源码”显示标记并用颜色加以区分,还包含了行号以便引用。通过访问“开发人员工具”的“文件”菜单中“自定义Internet Explorer查看源码”菜单选项,可以改变默认的源查看器。

1.4  Shell文档视图

Shell文档视图(ShDocVw)是一种活动文档容器(也称为“文档宿主程序”)。这个容器在Shell命名空间内部托管OLE活动文档(或者文档对象)。通常,IE托管MSHTML,这是一种为呈现HTML设计的文档对象。为了托管OLE活动文档,Shell文档视图实现了IOleClientSite和IOleDocumentSite。

将在后面进行讨论的WebBrowser控件是一个包装,用于封装同一IShellBrowser界面。WebBrowser控件不是托管在IE框架内,它是一个可以由其他应用程序托管的ActiveX控件。通过ShDocVw和一个称为CBaseBrowser2的私有类(但在导出的表头中可以看到这个类),IE框架和WebBrrowser控件共享一些公共功能,例如“旅行日志”和快捷菜单扩展。

1.4.1  旅行日志和共享功能

有很多功能都是由IE框架和WebBrowser控件共享的,这一共享是通过ShDocVw及内部的CBaseBrowser2类实现的。

旅行日志是IE用于导航信息的函数式存储与访问机制。简单地说,它是一种数据结构和相应的界面,存储一个“堆栈”,对一个ShDocVw实例的导航进行更改。还有一些公开的界面,例如ITravelLog,但这些界面在SDK文档中显示为已弃用(不过很可能还能访问它们)。

IE框架和WebBrowser控件之间共享的很多其他函数和属性,都可以通过ExecWB()函数和相关事件在ShDocVw的IWebBrowser2界面中找到。

1.4.2  Trident (MSHTML)

Trident (MSHTML)是一个由ShDocVw托管的OLE活动文档。终端用户更多的是将它看作IE中一个显示网页的框。在这个显示之下有大量子系统,用于处理网页的分析、渲染和布局,而且还公开了大量API。在下一节将更详细地讨论Trident是如何下载、分析和显示网页的。

1.4.3  第三方及自定义文档对象

COM对象可以公开一个自定义OLE活动文档,它的实现可以被托管在ShDocVw中。一些常见的文档对象包括Microsoft Office查看器(PowerPoint,Word和Visio)和PDF阅读器(Adobe Acrobat和FoxIt阅读器)。这些应用程序只是指出与其活动文档处理器的MIME类型和文件关联,当加载一个与该关联相匹配的文档时,IE将加载相关的实现。

1.5  Trident布局和渲染引擎

MSHTML为很多人所熟知,有时被称为“Trident”,它是一种布局和渲染引擎,由IE用于处理HTML,CSS和其他标记分析。Trident本身是一种OLE活动文档,使用单元线程(apartment threading)将其构建为一个全异步库。

尽管Trident是由Active Document容器托管的,但它有自己非常深入和广泛的扩展模型。导出的组件在很大程度上是实现IDispatch或IDispatchEx,因此,可以使用OLE自动化与脚本进行访问。它的很多子系统也支持通过COM进行二进制扩展;诸如Active控件、脚本引擎和行为等对象,可以在运行时加载,在引擎操作时执行。

Trident还负责确定和处理IE的兼容性场景,既包括二进制界面方面的兼容,也包括Web标准方面的兼容。由于不同版本的发布时间相距较远,而且存在大量的主流IE版本,所以很多Web和系统应用程序在设计时所依据的Trident版本是不一样的。因此,在不同版本中仍然保留了Trident的组成部分,使IE能够处理下层Web标准支持以及COM界面的原有实现。

读书导航