WPF Webbrowser C # JavaScript взаимодействия - PullRequest
0 голосов
/ 09 июля 2011

Я работаю над приложением, которое по большей части является html / javascript (полностью «HTML5») с легкой оболочкой приложения WPF, чтобы оно могло взаимодействовать с локальными ресурсами.

Приложение имеет один HTML-файл, к которому я перемещаюсь программно Как только файл загружен, я пытаюсь присоединить обработчики событий, чтобы я мог обрабатывать определенные события в C #.

Когда я пытаюсь использовать объекты mshtml, кажется, что я получаю только нули обратно. Например, вот код:

string initUrl = "file:///" + Path.Combine(Environment.CurrentDirectory, Path.Combine("Pages", "ComposeSurface.html"));
navBrowser.Navigate(new Uri(initUrl));

navBrowser.Navigated += (o, e2) => 
{ 
    HTMLDocumentClass documentObject = navBrowser.Document as HTMLDocumentClass;
    IHTMLElement ele = documentObject.getElementById("initButton");
    if (ele != null)
    {
        Func<IHTMLEventObj, bool> evra = (arg) => { MessageBox.Show("Hello"); return true; };
        ele.onclick = evra as object;
    }
};

getElementById, похоже, всегда возвращает ноль. Я дважды проверил, и идентификатор элемента соответствует.

Мой второй вопрос связан с обработкой события - будет ли это работать для события click из обычной кнопки формы HTML, если добавить к нему немного C #?

1 Ответ

2 голосов
/ 09 июля 2011

Попробуйте использовать событие LoadCompleted. Документ все еще может загружаться во время события Navigated.

http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.navigated.aspx

http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.loadcompleted.aspx

...