訪(fǎng)問(wèn)動(dòng)態(tài)HTML(DHTML)對象模型的所有接口以IDispatch為基類(lèi),而且也是被用于腳本的對象模型的基礎。因此對要操縱對象模型的任何人來(lái)說(shuō)都很重要的是熟悉定義在動(dòng)態(tài)的HTML介紹的概要和MSHTML包含的對象模型參考中的結構和功能。
MSHTML參考的接口和腳本對象這一節說(shuō)明了對象如何在DHTML對象模型里面映射到接口。舉例來(lái)說(shuō),使用這一個(gè)映射,你可以看到IHTMLDocument2接口映射到文檔對象。對接口的進(jìn)一步的研究說(shuō)明了如何通過(guò)get_和put_方法訪(fǎng)問(wèn)對象的屬性。對象的方法映射到可用的接口的方法,而且事件可以用標準的對OLE自動(dòng)化連接點(diǎn)來(lái)捕獲。
如何使對象模型接口的樣例的演示在Colbtn、Driller和WalkAll示例中,這些示例在Colbtn示例源代碼頁(yè)面、Driller示例源代碼頁(yè)面和WalkAll示例源代碼頁(yè)面上。
通常,在文檔中可以用腳本完成的任何事都可以通過(guò)使用接口操縱對象模型來(lái)完成。因此推薦在寫(xiě)使用對象模型接口的代碼之前, 開(kāi)發(fā)者應該在一個(gè) HTML文檔里面使用腳本設計功能原型。
下列HTML例子說(shuō)明如何用腳本導航文檔的all集合而且獲得文檔的每個(gè)元素的標簽名字。等價(jià)的使用對象模型接口的Microsoft (R) Visual C++(R)的代碼示例在Driller示例源代碼頁(yè)面和WalkAll示例源代碼頁(yè)面上可以找到。
例子
<HTML>
<HEAD>
<TITLE>Page Title</TITLE>
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Loaded()
{
var c = document.all.length;
var i;
for(i = 0; i < c; i++)
{
spanTAGS.innerHTML = spanTAGS.innerHTML + document.all.item(i).tagName + "<BR>";
}
}
</SCRIPT>
<BODY onload="Loaded()">
<SPAN id="spanTAGS"></SPAN>
</BODY>
</HTML>
要開(kāi)始使用對象模型接口,就要從文檔獲得IHTMLDocument2接口。一旦你有了這個(gè)接口,你就能存取文檔中所有的元素。如何獲得文檔接口依賴(lài)于你的應用程序的實(shí)現。下列場(chǎng)合都需要以不同的方式獲得文檔接口。
當集成一個(gè)MSHTML對象的時(shí)候,使用 CoCreateInstance創(chuàng )建HTML文檔對象。 一旦創(chuàng )建了對象,你可以調用它的QueryInterface 方法,請求IID_IHTMLDocument2。WalkAll示例源代碼頁(yè)面的WalkAll示例說(shuō)明了實(shí)現方法。
當集成瀏覽器控件的時(shí)候,執行下列步驟獲得文檔接口:
ActiveX文檔的存取動(dòng)態(tài)HTML這一節解釋了如何從ActiveX (R)控件獲得文檔接口。
使用文檔接口
一旦你獲得了文檔接口,你就可以使用任何一個(gè)IHTMLDocument2接口獲得或修改文檔的屬性。這通常包括從文檔包含的不同的元素中得到一些IHTMLElementCollection接口。
一個(gè)非常普遍的集合對象是all集合對象。all集合對象是通過(guò)使用IHTMLDocument2::all 方法獲得的。 這個(gè)方法返回一個(gè)包含文檔的所有元素的IHTMLElementCollection接口。然后你可以使用IHTMLElementCollection::item方法枚舉元素。 IHTMLElementCollection::item方法為你提供一個(gè)可以用于調用QueryInterface,請求IID_IHTMLElement的IDispatch指針。這將會(huì )返回給你一個(gè)你能用來(lái)為個(gè)別的元素獲得或設置信息的IHTMLElement接口指針。
大多數的元素提供一個(gè)接口操縱那個(gè)特定的元素。這些元素相關(guān)的接口名字具有IHTMLXXXXElement的格式,這里XXXX是元素的名字。要獲得元素的對應接口,可以在IHTMLElement接口上調用QueryInterface,請求被需要的元素相關(guān)的接口。舉例來(lái)說(shuō),img 元素提供一個(gè)IHTMLImgElement接口以可能用來(lái)明確地操縱img元素。如果要查看可用的元素相關(guān)的接口列表,可以查看接口和腳本對象的接口列表。
聯(lián)系客服