正文

Internet Explorer體系結(jié)構(gòu)(9)

IE8 & 9開(kāi)發(fā)實(shí)戰(zhàn):基于下一代IE的應(yīng)用開(kāi)發(fā) 作者:(美)克羅利


  

4. 網(wǎng)頁(yè)快訊

網(wǎng)頁(yè)快訊(見(jiàn)圖1-16)是根據(jù)hAtom微格式建立模型的擴(kuò)展,允許用戶“訂閱”預(yù)定義的部分標(biāo)記。任意HTML部分都可以成為一個(gè)“網(wǎng)頁(yè)快訊”,只要根據(jù)網(wǎng)頁(yè)快訊格式定義,將它們封裝在正確設(shè)置了類型的<div>元素中即可。

圖1-16  “獲取更多加載項(xiàng)”網(wǎng)頁(yè)快訊推薦Digg.com

網(wǎng)頁(yè)快訊可以通過(guò)帶有entry-title的<div>為“收藏夾欄”指定標(biāo)題;以類似方式,用entry-content來(lái)指明內(nèi)容。為了設(shè)置屬性,可以使用該屬性的類名稱,將屬性值包裝在元素中。例如,在設(shè)置“生存時(shí)間”(TTL)時(shí),可以將期望值包裝在一個(gè)類值為ttl的<span>標(biāo)記中。

5. 小書(shū)簽(bookmarklet)

小書(shū)簽是一種使用JavaScript定義的收藏夾。它們與傳統(tǒng)收藏夾的不同之處在于它們不會(huì)啟動(dòng)一個(gè)新的選項(xiàng)卡或新頁(yè)面(除非通過(guò)腳本指引它這樣做);而是在活動(dòng)網(wǎng)頁(yè)的上下文中運(yùn)行小書(shū)簽中的標(biāo)記和腳本。

就技術(shù)難度來(lái)說(shuō),小書(shū)簽是很簡(jiǎn)單的,它為所有主流瀏覽器都托管了大量具有強(qiáng)大功能的工具;例如,Web開(kāi)發(fā)人員可以運(yùn)行CSS分析工具以提供優(yōu)化信息,如圖1-17所示。

圖1-17  檢查CSS優(yōu)化的小書(shū)簽

小書(shū)簽通常在現(xiàn)代網(wǎng)頁(yè)瀏覽器之間是能夠互操作的;但是,IE對(duì)這些擴(kuò)展的內(nèi)容和大小設(shè)置了許多限制。

6. 菜單擴(kuò)展

IE提供了3種可以添加項(xiàng)目的菜單:頁(yè)內(nèi)的快捷菜單、“工具”菜單和“幫助”菜單。盡管IE的固定菜單項(xiàng)不能被移除,但開(kāi)發(fā)人員可以向菜單中添加新項(xiàng)目,以執(zhí)行自定義操作(見(jiàn)圖1-18)。

圖1-18  Eric Lawrence的Define快捷菜單項(xiàng)和Fiddler工具菜單項(xiàng)

菜單項(xiàng)的構(gòu)造是相當(dāng)容易的。每個(gè)菜單項(xiàng)或者是在注冊(cè)表中的HKEY_LOCAL_MACHINE配置單元中定義,或者是在HKEY_CURRENT_USER配置單元中定義,而且擁有自己的GUID。與菜單項(xiàng)相關(guān)聯(lián)的操作可以采用3種方式來(lái)編寫(xiě):對(duì)外部應(yīng)用程序的調(diào)用、要執(zhí)行的腳本文件,或者要執(zhí)行的COM對(duì)象的類ID(CLSID)。

7. 工具欄按鈕

工具欄按鈕是駐留在IE命令條上的16像素×16像素圖標(biāo)(當(dāng)啟用大圖標(biāo)時(shí),為24像素×24像素)(見(jiàn)圖1-19)。IE在選項(xiàng)卡行旁邊的主用戶界面中顯示它們,使用戶只需一次單擊就能訪問(wèn)常用IE功能和擴(kuò)展。用戶可以通過(guò)一個(gè)設(shè)置對(duì)話框來(lái)修改工具欄按鈕的順序。

圖1-19  UAStringPicker,F(xiàn)iddler和HTTPWatch的工具欄擴(kuò)展

和菜單擴(kuò)展一樣,工具欄按鈕也是通過(guò)簡(jiǎn)單的注冊(cè)表項(xiàng)定義的。每個(gè)按鈕都有自己的GUID,可以放置在計(jì)算機(jī)或用戶注冊(cè)表配置單元中。工具欄按鈕可以執(zhí)行3種操作之一:調(diào)用外部應(yīng)用程序、運(yùn)行一個(gè)腳本文件,或者調(diào)用一個(gè)COM對(duì)象。

8. 瀏覽器幫助程序?qū)ο?/p>

瀏覽器幫助程序?qū)ο?BHO)是進(jìn)程內(nèi)COM服務(wù)器,是IE為瀏覽器基礎(chǔ)功能擴(kuò)展而實(shí)例化的。BHO實(shí)現(xiàn)了IUnknown和IObjectWithSite,它是通過(guò)CoCreateInstance()實(shí)例化的,利用SetSite()將其放置在IE主執(zhí)行線程中。與其他常見(jiàn)擴(kuò)展不同的是,IE沒(méi)有為BHO提供繪圖圖面;就是希望它們僅僅在后臺(tái)運(yùn)行。

IE僅向BHO回傳通用的、多用途界面指針(例如IWebBrowser2);由于IE不知道BHO將用于什么目的,所以它等待BHO來(lái)查詢界面指針,以防止對(duì)系統(tǒng)資源造成負(fù)面影響。舉例來(lái)說(shuō),如果一個(gè)擴(kuò)展希望訪問(wèn)像IWebBrowser2這樣的界面,它必須使用QueryInterface(),并申請(qǐng)IE中的任意界面指針。這一基本原理也適用于事件;為了從事件界面(例如DWebBrowserEvents2)接收事件,BHO必須使用IDispEventImpl或等價(jià)界面接收事件。


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)