正文

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

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


  

1.2.6  框架和選項卡擴展性

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

1. 工具欄

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

圖1-13  在IE 8中運行的TwitterBar工具欄

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

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

2. 瀏覽器欄

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

圖1-14  運行在IE 8中的HTTPWatch瀏覽器欄

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

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

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

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

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

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

圖1-15  Bing地圖加速器

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


上一章目錄下一章

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