Доступ к членам управляемой объектной модели документов HTML, доступ к которым не предоставляется явно
Управляемые объектной модели (DOM) HTML документа содержит класс с именем HtmlElement , предоставляющая свойства, методы и события, общие для всех элементов HTML. Иногда тем не менее, необходимо будет получить доступ к членам, которые управляемый интерфейс не предоставляется напрямую. В этом разделе рассматриваются два способа получения доступа к членам, не предоставленным явно, включая JScript и функции VBScript, определенные внутри веб-страницы.
Доступ к членам, не предоставленным явно с помощью управляемых интерфейсов
HtmlDocument и HtmlElement предоставляют четыре метода, которые обеспечивают доступ к членам, не предоставленным явно. Ниже приведены типы и соответствующие методы.
Тип члена | Методы |
---|---|
Свойства (HtmlElement) | GetAttribute SetAttribute |
Методы | InvokeMember |
События (HtmlDocument) | AttachEventHandler DetachEventHandler |
События (HtmlElement) | AttachEventHandler DetachEventHandler |
События (HtmlWindow) | AttachEventHandler DetachEventHandler |
При использовании этих методов, предполагается, что имеется элемент Неправильный базовый тип. Предположим, что требуется ожидать передачи данных для Submit
событие FORM
на HTML-странице, чтобы выполнить предварительную обработку FORM
его значения перед их отправкой на сервер. В идеале, если у вас есть контроль над HTML, необходимо определить FORM
уникальный ID
атрибута.
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
После загрузки этой страницы в WebBrowser элемента управления, можно использовать GetElementById метод для извлечения FORM
во время выполнения с помощью form1
в качестве аргумента.
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");
}
}
}
}
Доступ к неуправляемым интерфейсам
Можно также получить доступ к членов, не предоставленные явно в управляемая модель HTML DOM, используя неуправляемые интерфейсы компонента объекта модели (COM), предоставляемых каждый класс DOM. Это рекомендуется, если у вас есть несколько вызовов к которым не предоставляется явно членов или не предоставленным явно члены возвращают неуправляемые интерфейсы, не заключаются в оболочку управляемому HTML DOM
В следующей таблице показаны все неуправляемые интерфейсы, предоставляемые через управляемому HTML DOM Щелкните ссылку Описание его использования и пример кода.
Тип | Неуправляемый интерфейс |
---|---|
HtmlDocument | DomDocument |
HtmlElement | DomElement |
HtmlWindow | DomWindow |
HtmlHistory | DomHistory |
Самый простой способ использования интерфейсов COM является добавление ссылки на неуправляемую библиотеку HTML DOM (MSHTML.dll) из своего приложения, несмотря на то, что это не поддерживается. Дополнительные сведения см. в разделе 934368 статьи базы знаний.
Функции доступа к скрипту
HTML-страницы можно определить одну или несколько функций с помощью языка сценариев, таких как JScript или VBScript. Эти функции помещаются внутри SCRIPT
страницы на странице и могут выполняться по запросу или в ответ на событие в модели DOM.
Можно вызвать любую функцию скрипта, определяются в HTML-страницы с использованием InvokeScript метод. Если в метод скрипта возвращает HTML-элемент, можно использовать приведение преобразовать этот возвращаемый результат HtmlElement. Дополнительные сведения и пример кода, см. в разделе InvokeScript.