正文

Internet Explorer体系结构(12)

IE8 & 9开发实战:基于下一代IE的应用开发 作者:(美)克罗利


  

1. IE动态HTML对象模型和W3C文档对象模型

IE动态HTML对象模型(DHTML OM)向外部界面公开内部元素构造,使开发人员能够以编程方式,从脚本和二进制应用程序中访问元素的属性、方法和事件。

W3C文档对象模型(DOM)是一种具有互操作性能的平台中性对象模型实现,创建这一模型的目的是使对象模型实现符合标准,能够跨主流浏览器使用。W3C DOM可以通过JavaScript访问,并在很多现有IE DHTML DOM界面的上层实现。

IE DHTML OM和W3C DOM尽管都能精确地表示文档对象,但在本质上是不同的。W3C DOM为开发人员提供了一种更简单的方法,可以用来处理文档、改变属性和生成能够跨多种浏览器和平台工作的应用程序。DHTML OM的一些方法,例如事件(eventing),没有通过W3C DOM公开。

2. 脚本引擎界面(JScript.dll,VBScript.dll)

对任何实现IActiveScript和IActiveScriptParse的脚本引擎,Trident都可以用作脚本宿主程序(实现IActiveScriptSite和IActiveScriptSiteWindow)。开发人员大多是通过Trident来使用JavaScript (JScript.dll)和VBScript (VBScript.dll);但是,它能够加载任何实现这些活动脚本界面的脚本引擎。

早在对一个页面进行首次分析时,就能实例化脚本引擎;它们通常需要在第一次响应之后马上计算文档中的变化。当Trident定位一个脚本时,它会查询所使用的语言,并引用与该语言相关联的适当注册引擎,以进行初始化。

3. 跨域请求对象(XMLHTTP,XMLHTTPRequest)

XMLHTTP对象普遍称为XMLHTTPRequest,使客户端脚本能够发出HTTP请求。这个界面允许开发人员发出请求和接收响应,而无须重新加载或加载一个新网页。

在IE 7及更新版本中,XMLHTTP由IE包装,作为一个本机对象公开。开发人员可以编写JavaScript,直接请求服务器端内容,而无须直接调用ActiveX控件。在IE 7之前,如果开发人员希望使用XMLHTTPRequest,就需要通过脚本来加载MSXML XMLHTTP ActiveX控件,或者通过一个基于COM的加载项来实例化IXMLHTTPRequest。

4. 辅助功能

为了使辅助技术应用程序能够访问DOM,Trident OM通过IAccessible界面公开了大多数HTML元素。这个界面允许屏幕读取程序和其他辅助应用程序读取DOM中的元素,并将它们传达给用户。

到了IE 8,这个对象模型支持跨浏览器W3C Accessible Rich Internet Applications(ARIA)规范。这一规范使用“角色”、“状态”和“属性”来创建可以定制的元素定义。ARIA通过Microsoft Active Accessibility API(MSAA)来补充由辅助技术供应商使用的功能。

1.5.6  组件模型子系统

组件模型子系统处理“内容扩展性”:基于COM和基于脚本的应用程序都可以扩展Trident的基本功能,并向其中添加新功能。与框架和选项卡扩展不同的是,内容扩展通常是运行在IE外部,不需要任何额外工作;任何托管MSHTML或实现WebBrowser控件的应用程序都能通过Trident“自动”加载内容扩展。

1. 脚本和二进制行为

行为是MSHTML中的一些机制,允许开发人员创建元素效果,甚至是创建新的元素。它们是在IE 5.5版本中添加的,既用于扩展CSS,也允许对传统DOM元素进行定制。例如,开发人员可以向所有<div>标记中添加一个默认的onClick事件,或者自动使所有<br>标记像<p>标记一样操作。

脚本行为,通常被称为HTML组件(HTC),通过标记(markup)、JavaScript和CSS扩展元素功能和行为。二进制行为的操作方式与之类似,但使用了COM对象,这些对象实现IElementBehavior界面,并通过传送元素和脚本构造对事件做出反应。HTML组件与二进制行为的区别在于:它们是可下载的,可以在页面加载期间运行,而二进制行为必须在本地安装。

2. ActiveX控件

ActiveX控件是加载到一个网页内的COM服务器。它们提供的功能可以扩展传统的标记和脚本。例如,ActiveX控件可以实现IOleClientSite,以绘制到一个Trident渲染图面,或者例如,使用IPersistPropertyBag在二进制文件和页面内的脚本之间传送参数。

MSHTML可以向一个脚本公开一个控件的公共方法。为了从JavaScript中调用一个ActiveX对象的方法,开发人员必须实现IDispatch或IDispatchEx。还可以将事件传送给脚本;控制可以使用IProvideTypeInfo来公开事件,以在声明性语言中使用。在几乎所有受支持的IE版本中,为了执行这些操作中的任何一个,控制都必须实现IObjectSaftey;到了IE 7,甚至是为了加载一个具体控制,都必须为IE实现这个界面(或者等价的注册表键)。

实例化的ActiveX控件有大量限制,每发布一个新的IE版本,都会增加这些限制的数目。例如,到了IE 8,Windows Vista及更高版本中,Internet区域中的控件将默认在低完整性上下文中运行。

1.5.7  编辑子系统

编辑子系统负责MSHTML的文本编辑和网页制作功能。其中包含诸如以下功能:文本与窗体编辑、选择、插入光标浏览、键盘导航、剪贴板管理和contentEditable处理。

DOM中的每个元素(也就是每个控件、图像、表等)都拥有一个由“文本、布局和渲染子系统”创建的布局。当任意区域或元素被标记为可编辑时,就会将它传送给这一子系统,并处理用户和编程编辑命令。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号