Как общаться между 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>
Другие вопросы по тегам