Show / Hide Table of Contents

Доступ к членам управляемой объектной модели документов 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.

См. также

  • Использование управляемой объектной модели HTML-документов
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX