C # Webbrowser document, invokemember ("click"), возможно ли подождать, пока это действие click не будет разрешено? - PullRequest
1 голос
/ 08 июня 2011

Я имею в виду Invokemember («Click»), проблема в том, что я хочу иметь возможность получить получившийся innerhtml. Проблема в том, что я не уверен в том, как / если можно дождаться, пока результирующее действие invokemember ("click") не будет решено. Это означает, что в javascript, когда вы выполняете этот клик, вам не понадобятся следующие 20 элементов в списке. Тем не менее, я не уверен, как сказать, когда этот JavaScript будет полностью загружен. Ниже то, что я использую.

private void button1_Click(object sender, EventArgs e)
{
    HtmlElement button = webBrowser1.Document.GetElementById("ctl08_ctl00_InventoryListDisplayFieldRepeater2_ctl00_BlockViewPaging_Next");
    button.InvokeMember("click");
    HtmlElement document = webBrowser1.Document.GetElementsByTagName("html")[0];


}

1 Ответ

0 голосов
/ 08 июня 2011

Одним из возможных решений является изменение вашего обработчика события «click» в javascript, чтобы он изменял значение некоторого скрытого поля ввода непосредственно перед выходом из метода (после того, как вся работа выполнена). Вы можете присоединиться к событию изменения поля из кода C # и действовать при его запуске.

// Your init method - you can call it after `InitializeComponent`
// in the constructor of your form
Init() {
    webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    webBrowser1.Document.GetElementsByTagName("statusField")[0].AttachEventHandler("onchange", WorkDone);
}

void WorkDone(object sender, EventArgs e) {
    HtmlElement document = webBrowser1.Document.GetElementsByTagName("html")[0];
}

Это сырое решение, я еще не проверил, является ли "onchange" правильным DOM-событием.

Кроме того, вы не можете присоединиться к событиям DOM до полной загрузки документа, поэтому я поместил логику присоединения в обработчик события DocumentCompleted.

...