正文

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

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


  

1. IE動態(tài)HTML對象模型和W3C文檔對象模型

IE動態(tài)HTML對象模型(DHTML OM)向外部界面公開內(nèi)部元素構(gòu)造,使開發(fā)人員能夠以編程方式,從腳本和二進制應用程序中訪問元素的屬性、方法和事件。

W3C文檔對象模型(DOM)是一種具有互操作性能的平臺中性對象模型實現(xiàn),創(chuàng)建這一模型的目的是使對象模型實現(xiàn)符合標準,能夠跨主流瀏覽器使用。W3C DOM可以通過JavaScript訪問,并在很多現(xiàn)有IE DHTML DOM界面的上層實現(xiàn)。

IE DHTML OM和W3C DOM盡管都能精確地表示文檔對象,但在本質(zhì)上是不同的。W3C DOM為開發(fā)人員提供了一種更簡單的方法,可以用來處理文檔、改變屬性和生成能夠跨多種瀏覽器和平臺工作的應用程序。DHTML OM的一些方法,例如事件(eventing),沒有通過W3C DOM公開。

2. 腳本引擎界面(JScript.dll,VBScript.dll)

對任何實現(xiàn)IActiveScript和IActiveScriptParse的腳本引擎,Trident都可以用作腳本宿主程序(實現(xiàn)IActiveScriptSite和IActiveScriptSiteWindow)。開發(fā)人員大多是通過Trident來使用JavaScript (JScript.dll)和VBScript (VBScript.dll);但是,它能夠加載任何實現(xiàn)這些活動腳本界面的腳本引擎。

早在對一個頁面進行首次分析時,就能實例化腳本引擎;它們通常需要在第一次響應之后馬上計算文檔中的變化。當Trident定位一個腳本時,它會查詢所使用的語言,并引用與該語言相關(guān)聯(lián)的適當注冊引擎,以進行初始化。

3. 跨域請求對象(XMLHTTP,XMLHTTPRequest)

XMLHTTP對象普遍稱為XMLHTTPRequest,使客戶端腳本能夠發(fā)出HTTP請求。這個界面允許開發(fā)人員發(fā)出請求和接收響應,而無須重新加載或加載一個新網(wǎng)頁。

在IE 7及更新版本中,XMLHTTP由IE包裝,作為一個本機對象公開。開發(fā)人員可以編寫JavaScript,直接請求服務器端內(nèi)容,而無須直接調(diào)用ActiveX控件。在IE 7之前,如果開發(fā)人員希望使用XMLHTTPRequest,就需要通過腳本來加載MSXML XMLHTTP ActiveX控件,或者通過一個基于COM的加載項來實例化IXMLHTTPRequest。

4. 輔助功能

為了使輔助技術(shù)應用程序能夠訪問DOM,Trident OM通過IAccessible界面公開了大多數(shù)HTML元素。這個界面允許屏幕讀取程序和其他輔助應用程序讀取DOM中的元素,并將它們傳達給用戶。

到了IE 8,這個對象模型支持跨瀏覽器W3C Accessible Rich Internet Applications(ARIA)規(guī)范。這一規(guī)范使用“角色”、“狀態(tài)”和“屬性”來創(chuàng)建可以定制的元素定義。ARIA通過Microsoft Active Accessibility API(MSAA)來補充由輔助技術(shù)供應商使用的功能。

1.5.6  組件模型子系統(tǒng)

組件模型子系統(tǒng)處理“內(nèi)容擴展性”:基于COM和基于腳本的應用程序都可以擴展Trident的基本功能,并向其中添加新功能。與框架和選項卡擴展不同的是,內(nèi)容擴展通常是運行在IE外部,不需要任何額外工作;任何托管MSHTML或?qū)崿F(xiàn)WebBrowser控件的應用程序都能通過Trident“自動”加載內(nèi)容擴展。

1. 腳本和二進制行為

行為是MSHTML中的一些機制,允許開發(fā)人員創(chuàng)建元素效果,甚至是創(chuàng)建新的元素。它們是在IE 5.5版本中添加的,既用于擴展CSS,也允許對傳統(tǒng)DOM元素進行定制。例如,開發(fā)人員可以向所有<div>標記中添加一個默認的onClick事件,或者自動使所有<br>標記像<p>標記一樣操作。

腳本行為,通常被稱為HTML組件(HTC),通過標記(markup)、JavaScript和CSS擴展元素功能和行為。二進制行為的操作方式與之類似,但使用了COM對象,這些對象實現(xiàn)IElementBehavior界面,并通過傳送元素和腳本構(gòu)造對事件做出反應。HTML組件與二進制行為的區(qū)別在于:它們是可下載的,可以在頁面加載期間運行,而二進制行為必須在本地安裝。

2. ActiveX控件

ActiveX控件是加載到一個網(wǎng)頁內(nèi)的COM服務器。它們提供的功能可以擴展傳統(tǒng)的標記和腳本。例如,ActiveX控件可以實現(xiàn)IOleClientSite,以繪制到一個Trident渲染圖面,或者例如,使用IPersistPropertyBag在二進制文件和頁面內(nèi)的腳本之間傳送參數(shù)。

MSHTML可以向一個腳本公開一個控件的公共方法。為了從JavaScript中調(diào)用一個ActiveX對象的方法,開發(fā)人員必須實現(xiàn)IDispatch或IDispatchEx。還可以將事件傳送給腳本;控制可以使用IProvideTypeInfo來公開事件,以在聲明性語言中使用。在幾乎所有受支持的IE版本中,為了執(zhí)行這些操作中的任何一個,控制都必須實現(xiàn)IObjectSaftey;到了IE 7,甚至是為了加載一個具體控制,都必須為IE實現(xiàn)這個界面(或者等價的注冊表鍵)。

實例化的ActiveX控件有大量限制,每發(fā)布一個新的IE版本,都會增加這些限制的數(shù)目。例如,到了IE 8,Windows Vista及更高版本中,Internet區(qū)域中的控件將默認在低完整性上下文中運行。

1.5.7  編輯子系統(tǒng)

編輯子系統(tǒng)負責MSHTML的文本編輯和網(wǎng)頁制作功能。其中包含諸如以下功能:文本與窗體編輯、選擇、插入光標瀏覽、鍵盤導航、剪貼板管理和contentEditable處理。

DOM中的每個元素(也就是每個控件、圖像、表等)都擁有一個由“文本、布局和渲染子系統(tǒng)”創(chuàng)建的布局。當任意區(qū)域或元素被標記為可編輯時,就會將它傳送給這一子系統(tǒng),并處理用戶和編程編輯命令。


上一章目錄下一章

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