如何在WebBrowser实例中WPF和JavaScript之间进行通信?

8

我有一个包含一些JavaScript的C#/WPF应用程序,并嵌入了一个浏览器(WebBrowser)。它们如何能够双向通信?是否可以使用URL来实现?

JS->WPF: 监听变化。 WPF->JS: 将URL更改为javascript:alert('hello');

是否有更好的方法?

2个回答

6

4
请发布代码而不是链接。此外,链接的文章语法错误很多,表述也很模糊。 - Josh Noe

4
要从C#调用JavaScript函数
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>

这个能在WPF (System.Windows.Controls.WebBrowser)中运作吗?我认为你的例子是针对Forms的。 - koalabruder
我不知道它是否适用于WPF浏览器,在我的代码中,我将WinForm WebBrowser嵌入到我的WPF应用程序中,我将在我的答案中编辑代码。 - mlemay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接