4. 網(wǎng)頁快訊
網(wǎng)頁快訊(見圖1-16)是根據(jù)hAtom微格式建立模型的擴展,允許用戶“訂閱”預定義的部分標記。任意HTML部分都可以成為一個“網(wǎng)頁快訊”,只要根據(jù)網(wǎng)頁快訊格式定義,將它們封裝在正確設置了類型的<div>元素中即可。
圖1-16 “獲取更多加載項”網(wǎng)頁快訊推薦Digg.com
網(wǎng)頁快訊可以通過帶有entry-title的<div>為“收藏夾欄”指定標題;以類似方式,用entry-content來指明內(nèi)容。為了設置屬性,可以使用該屬性的類名稱,將屬性值包裝在元素中。例如,在設置“生存時間”(TTL)時,可以將期望值包裝在一個類值為ttl的<span>標記中。
5. 小書簽(bookmarklet)
小書簽是一種使用JavaScript定義的收藏夾。它們與傳統(tǒng)收藏夾的不同之處在于它們不會啟動一個新的選項卡或新頁面(除非通過腳本指引它這樣做);而是在活動網(wǎng)頁的上下文中運行小書簽中的標記和腳本。
就技術(shù)難度來說,小書簽是很簡單的,它為所有主流瀏覽器都托管了大量具有強大功能的工具;例如,Web開發(fā)人員可以運行CSS分析工具以提供優(yōu)化信息,如圖1-17所示。
圖1-17 檢查CSS優(yōu)化的小書簽
小書簽通常在現(xiàn)代網(wǎng)頁瀏覽器之間是能夠互操作的;但是,IE對這些擴展的內(nèi)容和大小設置了許多限制。
6. 菜單擴展
IE提供了3種可以添加項目的菜單:頁內(nèi)的快捷菜單、“工具”菜單和“幫助”菜單。盡管IE的固定菜單項不能被移除,但開發(fā)人員可以向菜單中添加新項目,以執(zhí)行自定義操作(見圖1-18)。
圖1-18 Eric Lawrence的Define快捷菜單項和Fiddler工具菜單項
菜單項的構(gòu)造是相當容易的。每個菜單項或者是在注冊表中的HKEY_LOCAL_MACHINE配置單元中定義,或者是在HKEY_CURRENT_USER配置單元中定義,而且擁有自己的GUID。與菜單項相關聯(lián)的操作可以采用3種方式來編寫:對外部應用程序的調(diào)用、要執(zhí)行的腳本文件,或者要執(zhí)行的COM對象的類ID(CLSID)。
7. 工具欄按鈕
工具欄按鈕是駐留在IE命令條上的16像素×16像素圖標(當啟用大圖標時,為24像素×24像素)(見圖1-19)。IE在選項卡行旁邊的主用戶界面中顯示它們,使用戶只需一次單擊就能訪問常用IE功能和擴展。用戶可以通過一個設置對話框來修改工具欄按鈕的順序。
圖1-19 UAStringPicker,F(xiàn)iddler和HTTPWatch的工具欄擴展
和菜單擴展一樣,工具欄按鈕也是通過簡單的注冊表項定義的。每個按鈕都有自己的GUID,可以放置在計算機或用戶注冊表配置單元中。工具欄按鈕可以執(zhí)行3種操作之一:調(diào)用外部應用程序、運行一個腳本文件,或者調(diào)用一個COM對象。
8. 瀏覽器幫助程序?qū)ο?/p>
瀏覽器幫助程序?qū)ο?BHO)是進程內(nèi)COM服務器,是IE為瀏覽器基礎功能擴展而實例化的。BHO實現(xiàn)了IUnknown和IObjectWithSite,它是通過CoCreateInstance()實例化的,利用SetSite()將其放置在IE主執(zhí)行線程中。與其他常見擴展不同的是,IE沒有為BHO提供繪圖圖面;就是希望它們僅僅在后臺運行。
IE僅向BHO回傳通用的、多用途界面指針(例如IWebBrowser2);由于IE不知道BHO將用于什么目的,所以它等待BHO來查詢界面指針,以防止對系統(tǒng)資源造成負面影響。舉例來說,如果一個擴展希望訪問像IWebBrowser2這樣的界面,它必須使用QueryInterface(),并申請IE中的任意界面指針。這一基本原理也適用于事件;為了從事件界面(例如DWebBrowserEvents2)接收事件,BHO必須使用IDispEventImpl或等價界面接收事件。