Přístup k nevystaveným členům v modelu spravovaného objektu dokumentu HTML
Spravovaný objektový model DOKUMENTU HTML (DOM) obsahuje třídu, HtmlElement která zveřejňuje vlastnosti, metody a události, které mají všechny elementy HTML společné. Někdy ale budete potřebovat přístup k členům, které spravované rozhraní přímo nezpřístupňuje. Toto téma zkoumá dva způsoby přístupu k nevyexponovaným členům, včetně funkcí JScript a VBScript definovaných uvnitř webové stránky.
Přístup k nevyexponovaným členům prostřednictvím spravovaných rozhraní
HtmlDocument a HtmlElement poskytují čtyři metody, které umožňují přístup k nevyexponovaným členům. Následující tabulka uvádí typy a jejich odpovídající metody.
Typ členu | Metody |
---|---|
Vlastnosti (HtmlElement) | GetAttribute SetAttribute |
Metody | InvokeMember |
Události (HtmlDocument) | AttachEventHandler DetachEventHandler |
Události (HtmlElement) | AttachEventHandler DetachEventHandler |
Události (HtmlWindow) | AttachEventHandler DetachEventHandler |
Při použití těchto metod se předpokládá, že máte prvek správného základního typu. Předpokládejme, že chcete naslouchat Submit
události FORM
elementu na stránce HTML, abyste mohli před odesláním uživatele na server provést určité předběžné zpracování FORM
hodnot. V ideálním případě, pokud máte kontrolu nad HTML, byste definovali FORM
, aby měl jedinečný ID
atribut.
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
Po načtení této stránky do WebBrowser ovládacího prvku můžete použít GetElementById metodu FORM
k načtení za běhu pomocí form1
argumentu.
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
Přístup k nespravovaným rozhraním
K neexponovaným členům ve spravovaném modelu HTML DOM můžete přistupovat také pomocí nespravovaných rozhraní MODELU COM (Component Object Model) vystavených jednotlivými třídami MODELU DOM. To se doporučuje, pokud potřebujete provést několik volání vůči neexponovaným členům nebo pokud neexponované členy vrátí další nespravovaná rozhraní, která nejsou zabalena spravovaným kódem HTML DOM.
Následující tabulka ukazuje všechna nespravovaná rozhraní vystavená prostřednictvím spravovaného MODELU HTML DOM. Kliknutím na každý odkaz zobrazíte vysvětlení jejího použití a například kódu.
Type | Nespravované rozhraní |
---|---|
HtmlDocument | DomDocument |
HtmlElement | DomElement |
HtmlWindow | DomWindow |
HtmlHistory | DomHistory |
Nejjednodušší způsob, jak používat rozhraní COM, je přidat odkaz na nespravovanou knihovnu HTML DOM (MSHTML.dll) z vaší aplikace, i když to není podporováno.
Přístup ke skriptovacím funkcím
Stránka HTML může definovat jednu nebo více funkcí pomocí skriptovacího jazyka, jako je JScript nebo VBScript. Tyto funkce jsou umístěny uvnitř SCRIPT
stránky na stránce a mohou být spuštěny na vyžádání nebo v reakci na událost na modelu DOM.
Pomocí metody můžete volat všechny funkce skriptu, které definujete na stránce InvokeScript HTML. Pokud metoda skriptu vrátí HTML element, můžete použít přetypování převést tento návratový výsledek na .HtmlElement Podrobnosti a ukázkový kód najdete v tématu InvokeScript.
Viz také
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro