如何从C#.Net Webbrowser对象访问javascript变量?

时间:2015-02-04 21:00:00

标签: javascript c# .net

我想从我的C#.Net Winform应用程序创建一个Webbrowser .Net对象,然后能够访问javascript变量。

基本上我想在我的主要Winform应用程序中执行一些操作,具体取决于设置javascript变量时发生的一些用户交互。

关于如何调用Webbrowser对象来执行此操作的任何建议?

注意我确实查看了Document属性,该属性可以让您了解DOM,但不了解如何使用它来获取javascript变量。

2 个答案:

答案 0 :(得分:0)

利用CeSharp,这是一个Chromium Embedded Framework,可以更好地控制您的webbrowser组件。

开始使用

  • 启动VS项目
  • 打开nuget控制台并执行:Install-Package CefSharp.WinForms如果您正在使用Winforms C#App。
  • 重新启动Visual Studio并重新加载项目。

要开始的CefSharp代码示例。

  • 从工具箱中向工具箱添加toolStripContainer,然后使用以下示例代码加载cefsharp浏览器组件。

    public Form1() {       的InitializeComponent();       var browser = new ChromiumWebBrowser(" http://localhost:1071/");

      browser.Dock = DockStyle.Fill;
    
      toolStripContainer1.ContentPanel.Controls.Add(browser);
    

    }

这应该让你开始,为了与C#中的JS交谈,你需要使用EvaluateScript接口。

查看以下资源。 https://github.com/cefsharp/CefSharp/issues/368

答案 1 :(得分:0)

在WinForms浏览器中,使用ObjectForScripting属性来处理WinForms应用程序与WebBrowser Document之间的双向通信。

您可以通过Document对象从C#调用javascript成员:

 // C# code
 webBrowser1.Document.InvokeScript("test",
        new String[] { "called from client code" });

ObjectForScripting指定为

// C# code
webBrowser1.ObjectForScripting = obj;

似乎允许托管的javascript调用obj的成员,例如

// javascript code
window.external.SomeMethod('called from script code');
// executes obj.SomeMethod(string) in C#

免责声明:我只有WPF网页浏览器的使用经验,所以我自己也没有验证过上述内容。