正文

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

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


  

1.3  開發(fā)人員工具

開發(fā)人員工具是一組內(nèi)置的HTML,JavaScript和CSS工具,專門用于進(jìn)行快速原型制作與網(wǎng)頁調(diào)試。這些工具在IE 7中稱為“開發(fā)人員工具欄”,可以作為加載瀏覽器欄的下一級;在IE 8中,這些工具得到了改進(jìn),成為內(nèi)置工具。這些工具由4個(gè)主選項(xiàng)卡組成:HTML和樣式內(nèi)置編輯器、CSS樣式查看器、腳本調(diào)試器和JavaScript探查器。

HTML和CSS選項(xiàng)卡顯示關(guān)于DOM、頁面布局和適用樣式的可編輯信息。DOM可以通過一個(gè)樹狀視圖對象進(jìn)行編輯;在單擊一個(gè)節(jié)點(diǎn)時(shí),可以通過相鄰面板來查看樣式、布局、屬性、信息和CSS跟蹤。只要這個(gè)編輯器所顯示的元素仍然存在于該頁面中,在這個(gè)視圖中對項(xiàng)目進(jìn)行的更改都會反映到當(dāng)前頁面中。

腳本調(diào)試器和探查器提供了當(dāng)前頁面的實(shí)時(shí)腳本調(diào)試、控制臺編輯、斷點(diǎn)插入和腳本定時(shí)信息。在“腳本”選項(xiàng)卡(譯者注:原書中為Debugger選項(xiàng)卡)中,開發(fā)人員可以打開和關(guān)閉調(diào)試、逐語句、逐過程和跳出;查看斷點(diǎn)、局部變量、監(jiān)視和調(diào)用堆棧。探查器顯示了對當(dāng)前頁面所加載JavsScript函數(shù)的定時(shí)調(diào)用,以及調(diào)用數(shù)目和整體調(diào)用樹。

腳本錯(cuò)誤和查看源碼

“腳本錯(cuò)誤”對話框向用戶通告網(wǎng)頁上發(fā)生的腳本錯(cuò)誤;為處理該網(wǎng)頁上的腳本塊而加載的腳本引擎會返回這個(gè)錯(cuò)誤,由IE顯示。在以前版本的IE中,如果注冊了默認(rèn)的系統(tǒng)調(diào)試器,有一些腳本錯(cuò)誤會被發(fā)送到該調(diào)試器。

到了IE 8,IE中包含了內(nèi)置源碼查看器?!安榭丛创a”顯示標(biāo)記并用顏色加以區(qū)分,還包含了行號以便引用。通過訪問“開發(fā)人員工具”的“文件”菜單中“自定義Internet Explorer查看源碼”菜單選項(xiàng),可以改變默認(rèn)的源查看器。

1.4  Shell文檔視圖

Shell文檔視圖(ShDocVw)是一種活動文檔容器(也稱為“文檔宿主程序”)。這個(gè)容器在Shell命名空間內(nèi)部托管OLE活動文檔(或者文檔對象)。通常,IE托管MSHTML,這是一種為呈現(xiàn)HTML設(shè)計(jì)的文檔對象。為了托管OLE活動文檔,Shell文檔視圖實(shí)現(xiàn)了IOleClientSite和IOleDocumentSite。

將在后面進(jìn)行討論的WebBrowser控件是一個(gè)包裝,用于封裝同一IShellBrowser界面。WebBrowser控件不是托管在IE框架內(nèi),它是一個(gè)可以由其他應(yīng)用程序托管的ActiveX控件。通過ShDocVw和一個(gè)稱為CBaseBrowser2的私有類(但在導(dǎo)出的表頭中可以看到這個(gè)類),IE框架和WebBrrowser控件共享一些公共功能,例如“旅行日志”和快捷菜單擴(kuò)展。

1.4.1  旅行日志和共享功能

有很多功能都是由IE框架和WebBrowser控件共享的,這一共享是通過ShDocVw及內(nèi)部的CBaseBrowser2類實(shí)現(xiàn)的。

旅行日志是IE用于導(dǎo)航信息的函數(shù)式存儲與訪問機(jī)制。簡單地說,它是一種數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的界面,存儲一個(gè)“堆?!保瑢σ粋€(gè)ShDocVw實(shí)例的導(dǎo)航進(jìn)行更改。還有一些公開的界面,例如ITravelLog,但這些界面在SDK文檔中顯示為已棄用(不過很可能還能訪問它們)。

IE框架和WebBrowser控件之間共享的很多其他函數(shù)和屬性,都可以通過ExecWB()函數(shù)和相關(guān)事件在ShDocVw的IWebBrowser2界面中找到。

1.4.2  Trident (MSHTML)

Trident (MSHTML)是一個(gè)由ShDocVw托管的OLE活動文檔。終端用戶更多的是將它看作IE中一個(gè)顯示網(wǎng)頁的框。在這個(gè)顯示之下有大量子系統(tǒng),用于處理網(wǎng)頁的分析、渲染和布局,而且還公開了大量API。在下一節(jié)將更詳細(xì)地討論Trident是如何下載、分析和顯示網(wǎng)頁的。

1.4.3  第三方及自定義文檔對象

COM對象可以公開一個(gè)自定義OLE活動文檔,它的實(shí)現(xiàn)可以被托管在ShDocVw中。一些常見的文檔對象包括Microsoft Office查看器(PowerPoint,Word和Visio)和PDF閱讀器(Adobe Acrobat和FoxIt閱讀器)。這些應(yīng)用程序只是指出與其活動文檔處理器的MIME類型和文件關(guān)聯(lián),當(dāng)加載一個(gè)與該關(guān)聯(lián)相匹配的文檔時(shí),IE將加載相關(guān)的實(shí)現(xiàn)。

1.5  Trident布局和渲染引擎

MSHTML為很多人所熟知,有時(shí)被稱為“Trident”,它是一種布局和渲染引擎,由IE用于處理HTML,CSS和其他標(biāo)記分析。Trident本身是一種OLE活動文檔,使用單元線程(apartment threading)將其構(gòu)建為一個(gè)全異步庫。

盡管Trident是由Active Document容器托管的,但它有自己非常深入和廣泛的擴(kuò)展模型。導(dǎo)出的組件在很大程度上是實(shí)現(xiàn)IDispatch或IDispatchEx,因此,可以使用OLE自動化與腳本進(jìn)行訪問。它的很多子系統(tǒng)也支持通過COM進(jìn)行二進(jìn)制擴(kuò)展;諸如Active控件、腳本引擎和行為等對象,可以在運(yùn)行時(shí)加載,在引擎操作時(shí)執(zhí)行。

Trident還負(fù)責(zé)確定和處理IE的兼容性場景,既包括二進(jìn)制界面方面的兼容,也包括Web標(biāo)準(zhǔn)方面的兼容。由于不同版本的發(fā)布時(shí)間相距較遠(yuǎn),而且存在大量的主流IE版本,所以很多Web和系統(tǒng)應(yīng)用程序在設(shè)計(jì)時(shí)所依據(jù)的Trident版本是不一樣的。因此,在不同版本中仍然保留了Trident的組成部分,使IE能夠處理下層Web標(biāo)準(zhǔn)支持以及COM界面的原有實(shí)現(xiàn)。


上一章目錄下一章

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