Как общаться между WPF и JavaScript в экземпляре WebBrowser?
У меня есть приложение C#/WPF со встроенным браузером (WebBrowser) с некоторым JavaScript. Как они могут общаться друг с другом в обоих направлениях? Можно ли использовать URL?
JS-> WPF: слушай изменения.
WPF->JS: изменить URL-адрес на javascript:alert('hello');
Есть ли способ лучше?
2 ответа
Решение
Важно знать, что есть два WebBrowser. Один для Windows Forms и один для WPF. Ссылка ниже использует WPF. http://www.dotnetfunda.com/articles/article840-working-with-webbrowser-in-wpf.aspx
Для вызова функции JavaScript из C#
object result = mWebBrowser.Document.InvokeScript("FunctionName", new String[] { Parameter1 });
// If the function succeed (my function return a boolean)
if (null == result || result.ToString().ToLower() == "false")
{
// Code
}
Это то, что вы хотите? Вот так ваш код C# вызывает ваш javascript, и он возвращает значение
Мой WPF Xaml:
<UserControl x:Class="MediaViewer.WebViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
<WindowsFormsHost>
<wf:WebBrowser x:Name="mWebBrowser" />
</WindowsFormsHost>
</UserControl>