4. 网页快讯
网页快讯(见图1-16)是根据hAtom微格式建立模型的扩展,允许用户“订阅”预定义的部分标记。任意HTML部分都可以成为一个“网页快讯”,只要根据网页快讯格式定义,将它们封装在正确设置了类型的<div>元素中即可。
图1-16 “获取更多加载项”网页快讯推荐Digg.com
网页快讯可以通过带有entry-title的<div>为“收藏夹栏”指定标题;以类似方式,用entry-content来指明内容。为了设置属性,可以使用该属性的类名称,将属性值包装在元素中。例如,在设置“生存时间”(TTL)时,可以将期望值包装在一个类值为ttl的<span>标记中。
5. 小书签(bookmarklet)
小书签是一种使用JavaScript定义的收藏夹。它们与传统收藏夹的不同之处在于它们不会启动一个新的选项卡或新页面(除非通过脚本指引它这样做);而是在活动网页的上下文中运行小书签中的标记和脚本。
就技术难度来说,小书签是很简单的,它为所有主流浏览器都托管了大量具有强大功能的工具;例如,Web开发人员可以运行CSS分析工具以提供优化信息,如图1-17所示。
图1-17 检查CSS优化的小书签
小书签通常在现代网页浏览器之间是能够互操作的;但是,IE对这些扩展的内容和大小设置了许多限制。
6. 菜单扩展
IE提供了3种可以添加项目的菜单:页内的快捷菜单、“工具”菜单和“帮助”菜单。尽管IE的固定菜单项不能被移除,但开发人员可以向菜单中添加新项目,以执行自定义操作(见图1-18)。
图1-18 Eric Lawrence的Define快捷菜单项和Fiddler工具菜单项
菜单项的构造是相当容易的。每个菜单项或者是在注册表中的HKEY_LOCAL_MACHINE配置单元中定义,或者是在HKEY_CURRENT_USER配置单元中定义,而且拥有自己的GUID。与菜单项相关联的操作可以采用3种方式来编写:对外部应用程序的调用、要执行的脚本文件,或者要执行的COM对象的类ID(CLSID)。
7. 工具栏按钮
工具栏按钮是驻留在IE命令条上的16像素×16像素图标(当启用大图标时,为24像素×24像素)(见图1-19)。IE在选项卡行旁边的主用户界面中显示它们,使用户只需一次单击就能访问常用IE功能和扩展。用户可以通过一个设置对话框来修改工具栏按钮的顺序。
图1-19 UAStringPicker,Fiddler和HTTPWatch的工具栏扩展
和菜单扩展一样,工具栏按钮也是通过简单的注册表项定义的。每个按钮都有自己的GUID,可以放置在计算机或用户注册表配置单元中。工具栏按钮可以执行3种操作之一:调用外部应用程序、运行一个脚本文件,或者调用一个COM对象。
8. 浏览器帮助程序对象
浏览器帮助程序对象(BHO)是进程内COM服务器,是IE为浏览器基础功能扩展而实例化的。BHO实现了IUnknown和IObjectWithSite,它是通过CoCreateInstance()实例化的,利用SetSite()将其放置在IE主执行线程中。与其他常见扩展不同的是,IE没有为BHO提供绘图图面;就是希望它们仅仅在后台运行。
IE仅向BHO回传通用的、多用途界面指针(例如IWebBrowser2);由于IE不知道BHO将用于什么目的,所以它等待BHO来查询界面指针,以防止对系统资源造成负面影响。举例来说,如果一个扩展希望访问像IWebBrowser2这样的界面,它必须使用QueryInterface(),并申请IE中的任意界面指针。这一基本原理也适用于事件;为了从事件界面(例如DWebBrowserEvents2)接收事件,BHO必须使用IDispEventImpl或等价界面接收事件。