マネージド HTML ドキュメント オブジェクト モデルでの非公開メンバーへのアクセス
マネージド HTML ドキュメント オブジェクト モデル (DOM) には、すべての HTML 要素に共通するプロパティ、メソッド、およびイベントを公開する HtmlElement というクラスが含まれています。 ただし、場合によっては、マネージド インターフェイスが直接公開しないメンバーにアクセスする必要があります。 このトピックでは、Web ページ内で定義されている JScript 関数と VBScript 関数など、公開されていないメンバーにアクセスするための 2 つの方法について説明します。
マネージド インターフェイスを介した非公開メンバーへのアクセス
HtmlDocument と HtmlElement には、非公開メンバーへのアクセスを可能にする 4 つの方法が用意されています。 次の表に、型とそれに対応するメソッドを示します。
メンバーの種類 | メソッド |
---|---|
プロパティ (HtmlElement) | GetAttribute SetAttribute |
メソッド | InvokeMember |
イベント (HtmlDocument) | AttachEventHandler DetachEventHandler |
イベント (HtmlElement) | AttachEventHandler DetachEventHandler |
イベント (HtmlWindow) | AttachEventHandler DetachEventHandler |
これらのメソッドを使用する場合は、正しい基になる型の要素があることを前提としています。 HTML ページ上の FORM
要素の Submit
イベントをリッスンして、ユーザーがサーバーに送信する前に FORM
の値に対して何らかの前処理を実行できるようにするとします。 HTML を制御できる場合は、一意の ID
属性を持つ FORM
を定義するのが理想的です。
<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 上のイベントに応答して実行できます。
InvokeScript メソッドを使用して、HTML ページで定義した任意のスクリプト関数を呼び出すことができます。 スクリプト メソッドが HTML 要素を返す場合は、キャストを使用して、この戻り値を HtmlElementに変換できます。 詳細とコード例については、InvokeScriptを参照してください。
関連項目
.NET Desktop feedback