マネージド HTML DOM (Document Object Model) の非公開メンバーへのアクセス
マネージド HTML ドキュメント オブジェクト モデル (DOM) には、すべての HTML 要素で共通して保有されているプロパティ、メソッド、イベントを公開する、HtmlElement というクラスが含まれています。 ただし、マネージド インターフェイスで直接公開されないメンバーにアクセスすることが必要になる場合があります。 このトピックでは、Web ページ内で定義されている JScript と VBScript の関数を含む、非公開メンバーにアクセスする 2 つの方法について説明します。
マネージド インターフェイスを使用した非公開メンバーへのアクセス
HtmlDocument と HtmlElement には、非公開メンバーへのアクセスを可能にする 4 つのメソッドが用意されています。 次の表に、型とそれに対応するメソッドを示します。
メンバーの型 | メソッド |
---|---|
プロパティ (HtmlElement) | GetAttribute SetAttribute |
メソッド | InvokeMember |
イベント (HtmlDocument) | AttachEventHandler DetachEventHandler |
イベント (HtmlElement) | AttachEventHandler DetachEventHandler |
イベント (HtmlWindow) | AttachEventHandler DetachEventHandler |
これらのメソッドを使用する際には、基になる適切な型の要素があることを前提としています。 たとえば、ユーザーがサーバーに送信する前に、FORM
の値に対していくつかの事前処理を実行できるように、HTML ページ上の FORM
要素の Submit
イベントをリッスンするとします。 理想としては、HTML を制御できる場合は、一意の FORM
属性を持つように ID
を定義します。
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
このページを WebBrowser コントロールに読み込んだ後は、GetElementById メソッドを使用して form1
を引数として使用することで、実行時に FORM
を取得できます。
private void SubmitForm(String formName)
{
HtmlElementCollection elems = null;
HtmlElement elem = null;
if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
elems = doc.All.GetElementsByName(formName);
if (elems != null && elems.Count > 0)
{
elem = elems[0];
if (elem.TagName.Equals("FORM"))
{
elem.InvokeMember("Submit");
}
}
}
}
Private Sub SubmitForm(ByVal FormName As String)
Dim Elems As HtmlElementCollection
Dim Elem As HtmlElement
If (WebBrowser1.Document IsNot Nothing) Then
With WebBrowser1.Document
Elems = .All.GetElementsByName(FormName)
If (Not Elems Is Nothing And Elems.Count > 0) Then
Elem = Elems(0)
If (Elem.TagName.Equals("FORM")) Then
Elem.InvokeMember("Submit")
End If
End If
End With
End If
End Sub
アンマネージド インターフェイスへのアクセス
各 DOM クラスによって公開されているアンマネージド コンポーネント オブジェクト モデル (COM) のインターフェイスを使用して、マネージド HTML DOM の非公開メンバーにアクセスすることもできます。 これは、非公開メンバーに対して複数の呼び出しを行う必要がある場合や、マネージド HTML DOM でラップされていない他のアンマネージド インターフェイスが非公開メンバーによって返される場合に推奨されます。
次の表は、マネージド HTML DOM を通じて公開されるすべてのアンマネージド インターフェイスを示します。 各リンクをクリックして、その使用法とコード例の説明を確認してください。
種類 | アンマネージド インターフェイス |
---|---|
HtmlDocument | DomDocument |
HtmlElement | DomElement |
HtmlWindow | DomWindow |
HtmlHistory | DomHistory |
COM インターフェイスを使用する最も簡単な方法は、アプリケーションからアンマネージド HTML DOM ライブラリ (MSHTML.dll) への参照を追加することです。ただし、この方法はサポートされていません。
スクリプト関数へのアクセス
HTML ページでは、JScript や VBScript などのスクリプト言語を使用して、1 つ以上の関数を定義できます。 これらの関数はそのページの SCRIPT
ページ内に配置され、必要に応じて、または DOM 上のイベントに応じて実行できます。
HTML ページで定義したスクリプト関数は、InvokeScript メソッドを使用して呼び出すことができます。 スクリプト メソッドによって HTML 要素が返される場合は、キャストを使用してこの返される結果を HtmlElement に変換できます。 詳細とコード例については、InvokeScript を参照してください。
関連項目
.NET Desktop feedback