正文

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

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


  

1.2.6  框架和選項(xiàng)卡擴(kuò)展性

IE框架和選項(xiàng)卡擴(kuò)展提供了大量界面,供開發(fā)人員用于擴(kuò)展IE的功能。這一節(jié)并沒有涵蓋全部主要擴(kuò)展性點(diǎn);諸如ActiveX控件和行為之類的擴(kuò)展被認(rèn)為是“內(nèi)容擴(kuò)展”;它們存在于Trident引擎中。

1. 工具欄

工具欄是基于COM的擴(kuò)展,它們是由IUnknown,IObjectWithSite,IPersistStream和IDeskBand構(gòu)建的,作為IE的ReBar容器的孩子存在。這些擴(kuò)展被放置在選項(xiàng)卡條與IE工作區(qū)頂部之間(見圖1-13)。即開即用地,IE提供了兩個(gè)工具欄:菜單欄和收藏夾欄。

圖1-13  在IE 8中運(yùn)行的TwitterBar工具欄

盡管從視覺上來看,工具欄是框架用戶界面的一部分,但它是由選項(xiàng)卡進(jìn)程所擁有的;每個(gè)工具欄的新實(shí)例都是為每個(gè)選項(xiàng)卡進(jìn)程中的每個(gè)選項(xiàng)卡創(chuàng)建的。它們之所以出現(xiàn)在框架用戶界面中,是為了與以前的版本保護(hù)一致。由于它們是由選項(xiàng)卡進(jìn)程加載的,所以工具欄既可以運(yùn)行在低完整性級別,也可以運(yùn)行在中完整性級別,具體取決于擁有它的選項(xiàng)卡處在何種MIC級別。

通過“管理加載項(xiàng)”界面可以管理已安裝的工具欄。此外,每個(gè)工具欄都有一個(gè)關(guān)閉按鈕;在每個(gè)工具欄的左介都有一個(gè)紅色的“x”,可以讓用戶禁用各個(gè)工具欄。也可以從“視圖”菜單中啟用、禁用或鎖定工具欄。

2. 瀏覽器欄

瀏覽器欄是在IE窗口的工作區(qū)內(nèi)部呈現(xiàn)的用戶界面構(gòu)造。這些擴(kuò)展可以垂直顯示在工作區(qū)的左側(cè),也可以垂直顯示在其底端(見圖1-14)。

圖1-14  運(yùn)行在IE 8中的HTTPWatch瀏覽器欄

和工具欄一樣,瀏覽器欄也必須實(shí)現(xiàn)IUnknown,IObjectWithSite,IPersistStream和IDeskBand。瀏覽器欄在IE框架內(nèi)有一個(gè)子窗口,而且和工具欄一樣,盡管瀏覽器欄在視覺上是瀏覽器框架的一部分,但它們實(shí)際是為每個(gè)選項(xiàng)卡實(shí)例化的。工具欄的位置(是垂直位于左側(cè),還是水平位于底端)是由類別ID決定的,這個(gè)ID在注冊庫時(shí)設(shè)定。

在沒有構(gòu)建基于COM庫的情況下也可以創(chuàng)建瀏覽器欄。在這種情況下,不是注冊一個(gè)專用DLL,而是加載ShDocVw庫,并導(dǎo)航到一個(gè)指定URL;這樣,就可以將一個(gè)常用網(wǎng)站轉(zhuǎn)換為擴(kuò)展,以進(jìn)行持久訪問。關(guān)于如何創(chuàng)建這兩種類型的瀏覽器欄,可以在本書后面找到更多信息。

出于性能、安全性和完整性目的,對瀏覽器欄設(shè)置了一些限制條件。每個(gè)瀏覽器欄類型只能同時(shí)顯示一個(gè)實(shí)例。這些擴(kuò)展以其所有者選項(xiàng)卡進(jìn)程的完整性級別執(zhí)行,根據(jù)應(yīng)用于網(wǎng)頁的區(qū)域或安全性設(shè)置,這一級別既可能為低,也可能為中。最后,那些指向網(wǎng)頁而不是指向COM庫的瀏覽器欄,不能與當(dāng)前加載頁面通信。

3. 加速器和OpenService規(guī)范

加速器是基于標(biāo)記的菜單擴(kuò)展,它們可以通過IE安裝,通過瀏覽器的快捷菜單訪問。這些基于XML的擴(kuò)展是從OpenService XML規(guī)范擴(kuò)展而來的,安裝到用戶的配置文件中,能夠向Web服務(wù)發(fā)送上下文信息。

每個(gè)加速器定義中包含了元數(shù)據(jù)信息,包括圖標(biāo)、標(biāo)題、類別URL目標(biāo)和URL預(yù)覽目標(biāo),它在執(zhí)行之前顯示一個(gè)上下文預(yù)覽(見圖1-15)。IE公開了window.external對象的AddService()函數(shù),允許從網(wǎng)頁中安裝加速器,還公開了IsServiceInstalled()方法,以檢查是否已經(jīng)安裝了一個(gè)加速器。

圖1-15  Bing地圖加速器

所有加速器都被安裝到一個(gè)用戶配置文件中,而不是在系統(tǒng)范圍內(nèi)安裝??梢酝ㄟ^“管理加載項(xiàng)”用戶界面來管理或刪除加速器。


上一章目錄下一章

Copyright ? 讀書網(wǎng) leeflamesbasketballcamps.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號